chromium/ios/chrome/browser/policy/ui_bundled/idle/idle_timeout_policy_utils.mm

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#import "ios/chrome/browser/policy/ui_bundled/idle/idle_timeout_policy_utils.h"

#import "components/enterprise/idle/action_type.h"
#import "components/enterprise/idle/idle_pref_names.h"
#import "ios/chrome/browser/shared/public/features/features.h"
#import "ios/chrome/grit/ios_branded_strings.h"
#import "ios/chrome/grit/ios_strings.h"

namespace enterprise_idle {

std::optional<int> GetIdleTimeoutActionsTitleId(ActionSet actions) {
  if (actions.clear && actions.close && actions.signout) {
    return IDS_IOS_IDLE_TIMEOUT_ALL_ACTIONS_TITLE;
  }
  if (actions.clear && actions.close) {
    return IDS_IOS_IDLE_TIMEOUT_CLOSE_TABS_AND_CLEAR_DATA_TITLE;
  }
  if (actions.clear && actions.signout) {
    return IDS_IOS_IDLE_TIMEOUT_CLEAR_DATA_AND_SIGNOUT_TITLE;
  }
  if (actions.close && actions.signout) {
    return IDS_IOS_IDLE_TIMEOUT_CLOSE_TABS_AND_SIGNOUT_TITLE;
  }
  if (actions.clear) {
    return IDS_IOS_IDLE_TIMEOUT_CLEAR_DATA_TITLE;
  }
  if (actions.signout) {
    return IDS_IOS_IDLE_TIMEOUT_SIGNOUT_TITLE;
  }
  if (actions.close) {
    return IDS_IOS_IDLE_TIMEOUT_CLOSE_TABS_TITLE;
  }
  // All cases should be covered by one of the title strings.
  return std::nullopt;
}

int GetIdleTimeoutActionsSubtitleId(ActionSet actions,
                                    bool is_data_cleared_on_signout) {
  if (actions.clear) {
    return IDS_IOS_IDLE_TIMEOUT_SUBTITLE_WITH_CLEAR_DATA;
  } else if (actions.signout && is_data_cleared_on_signout) {
    return IDS_IOS_IDLE_TIMEOUT_SUBTITLE_WITH_CLEAR_DATA_ON_SIGNOUT;
  } else {
    return IDS_IOS_IDLE_TIMEOUT_SUBTITLE_WITHOUT_CLEAR_DATA;
  }
}

std::optional<int> GetIdleTimeoutActionsSnackbarMessageId(ActionSet actions) {
  if (actions.clear && actions.close && actions.signout) {
    return IDS_IOS_IDLE_TIMEOUT_ALL_ACTIONS_SNACKBAR_MESSAGE;
  }
  if (actions.clear && actions.close) {
    return IDS_IOS_IDLE_TIMEOUT_CLOSE_TABS_AND_CLEAR_DATA_SNACKBAR_MESSAGE;
  }
  if (actions.clear && actions.signout) {
    return IDS_IOS_IDLE_TIMEOUT_CLEAR_DATA_AND_SIGNOUT_SNACKBAR_MESSAGE;
  }
  if (actions.close && actions.signout) {
    return IDS_IOS_IDLE_TIMEOUT_CLOSE_TABS_AND_SIGNOUT_SNACKBAR_MESSAGE;
  }
  if (actions.clear) {
    return IDS_IOS_IDLE_TIMEOUT_CLEAR_DATA_SNACKBAR_MESSAGE;
  }
  if (actions.signout) {
    return IDS_IOS_IDLE_TIMEOUT_SIGNOUT_SNACKBAR_MESSAGE;
  }
  if (actions.close) {
    return IDS_IOS_IDLE_TIMEOUT_CLOSE_TABS_SNACKBAR_MESSAGE;
  }
  // All cases should be covered by one of the title strings.
  return std::nullopt;
}

}  // namespace enterprise_idle