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

#include "chrome/browser/chromeos/extensions/file_manager/private_api_strings.h"

#include <memory>
#include <utility>

#include "base/strings/stringprintf.h"
#include "base/sys_info.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/file_manager/open_with_browser.h"
#include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/grit/generated_resources.h"
#include "chromeos/system/statistics_provider.h"
#include "components/strings/grit/components_strings.h"
#include "extensions/common/extension_l10n_util.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/webui/web_ui_util.h"

namespace {

// Location of the page to buy more storage for Google Drive.
const char kGoogleDriveBuyStorageUrl[] =
    "https://www.google.com/settings/storage";

// Location of the overview page about Google Drive.
const char kGoogleDriveOverviewUrl[] =
    "https://support.google.com/chromebook/?p=filemanager_drive";

// Location of Google drive redeem page.
const char kGoogleDriveRedeemUrl[] =
    "http://www.google.com/intl/en/chrome/devices/goodies.html"
    "?utm_source=filesapp&utm_medium=banner&utm_campaign=gsg";

// Location of Google Drive specific help.
const char kGoogleDriveHelpUrl[] =
    "https://support.google.com/chromebook/?p=filemanager_drivehelp";

// Location of Google Drive root.
const char kGoogleDriveRootUrl[] = "https://drive.google.com";

// Printf format
const char kHelpURLFormat[] = "https://support.google.com/chromebook/answer/%d";

// Location of the help page for low space warning in the downloads directory.
const int kDownloadsLowSpaceWarningHelpNumber = 1061547;

// Location of Files App specific help.
const int kFilesAppHelpNumber = 1056323;

// Location of the help page about connecting to Google Drive.
const int kGoogleDriveErrorHelpNumber = 2649458;

// Location of the help page about no-action-available files.
const int kNoActionForFileHelpNumber = 1700055;

#define SET_STRING(id, idr) dict->SetString(id, l10n_util::GetStringUTF16(idr))

void AddStringsForFileTypes(base::DictionaryValue* dict) {
  // TODO(crbug.com/438921): Rename string IDs to something like
  // FILE_TYPE_WHATEVER.
  SET_STRING("AUDIO_FILE_TYPE", IDS_FILE_BROWSER_AUDIO_FILE_TYPE);
  SET_STRING("EXCEL_FILE_TYPE", IDS_FILE_BROWSER_EXCEL_FILE_TYPE);
  SET_STRING("FOLDER", IDS_FILE_BROWSER_FOLDER);
  SET_STRING("GDOC_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_GDOC_DOCUMENT_FILE_TYPE);
  SET_STRING("GDRAW_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_GDRAW_DOCUMENT_FILE_TYPE);
  SET_STRING("GENERIC_FILE_TYPE", IDS_FILE_BROWSER_GENERIC_FILE_TYPE);
  SET_STRING("GFORM_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_GFORM_DOCUMENT_FILE_TYPE);
  SET_STRING("GLINK_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_GLINK_DOCUMENT_FILE_TYPE);
  SET_STRING("GMAP_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_GMAP_DOCUMENT_FILE_TYPE);
  SET_STRING("GSHEET_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_GSHEET_DOCUMENT_FILE_TYPE);
  SET_STRING("GSITE_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_GSITE_DOCUMENT_FILE_TYPE);
  SET_STRING("GSLIDES_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_GSLIDES_DOCUMENT_FILE_TYPE);
  SET_STRING("GTABLE_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_GTABLE_DOCUMENT_FILE_TYPE);
  SET_STRING("HTML_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_HTML_DOCUMENT_FILE_TYPE);
  SET_STRING("IMAGE_FILE_TYPE", IDS_FILE_BROWSER_IMAGE_FILE_TYPE);
  SET_STRING("NO_EXTENSION_FILE_TYPE", IDS_FILE_BROWSER_NO_EXTENSION_FILE_TYPE);
  SET_STRING("PDF_DOCUMENT_FILE_TYPE", IDS_FILE_BROWSER_PDF_DOCUMENT_FILE_TYPE);
  SET_STRING("PLAIN_TEXT_FILE_TYPE", IDS_FILE_BROWSER_PLAIN_TEXT_FILE_TYPE);
  SET_STRING("POWERPOINT_PRESENTATION_FILE_TYPE",
             IDS_FILE_BROWSER_POWERPOINT_PRESENTATION_FILE_TYPE);
  SET_STRING("RAR_ARCHIVE_FILE_TYPE", IDS_FILE_BROWSER_RAR_ARCHIVE_FILE_TYPE);
  SET_STRING("TAR_ARCHIVE_FILE_TYPE", IDS_FILE_BROWSER_TAR_ARCHIVE_FILE_TYPE);
  SET_STRING("TAR_BZIP2_ARCHIVE_FILE_TYPE",
             IDS_FILE_BROWSER_TAR_BZIP2_ARCHIVE_FILE_TYPE);
  SET_STRING("TAR_GZIP_ARCHIVE_FILE_TYPE",
             IDS_FILE_BROWSER_TAR_GZIP_ARCHIVE_FILE_TYPE);
  SET_STRING("VIDEO_FILE_TYPE", IDS_FILE_BROWSER_VIDEO_FILE_TYPE);
  SET_STRING("WORD_DOCUMENT_FILE_TYPE",
             IDS_FILE_BROWSER_WORD_DOCUMENT_FILE_TYPE);
  SET_STRING("ZIP_ARCHIVE_FILE_TYPE", IDS_FILE_BROWSER_ZIP_ARCHIVE_FILE_TYPE);
}

void AddStringsForDrive(base::DictionaryValue* dict) {
  SET_STRING("DRIVE_BUY_MORE_SPACE", IDS_FILE_BROWSER_DRIVE_BUY_MORE_SPACE);
  SET_STRING("DRIVE_BUY_MORE_SPACE_LINK",
             IDS_FILE_BROWSER_DRIVE_BUY_MORE_SPACE_LINK);
  SET_STRING("DRIVE_CANNOT_REACH", IDS_FILE_BROWSER_DRIVE_CANNOT_REACH);
  SET_STRING("DRIVE_DIRECTORY_LABEL", IDS_FILE_BROWSER_DRIVE_DIRECTORY_LABEL);
  SET_STRING("DRIVE_CONFIRM_TD_MEMBERS_LOSE_ACCESS",
             IDS_FILE_BROWSER_DRIVE_CONFIRM_TD_MEMBERS_LOSE_ACCESS);
  SET_STRING("DRIVE_CONFIRM_CANNOT_MOVE_BACK_TO_TEAM_DRIVE",
             IDS_FILE_BROWSER_DRIVE_CONFIRM_CANNOT_MOVE_BACK_TO_TEAM_DRIVE);
  SET_STRING("DRIVE_CONFIRM_TD_MEMBERS_GAIN_ACCESS_TO_COPY",
             IDS_FILE_BROWSER_DRIVE_CONFIRM_TD_MEMBERS_GAIN_ACCESS_TO_COPY);
  SET_STRING("DRIVE_CONFIRM_TD_MEMBERS_GAIN_ACCESS",
             IDS_FILE_BROWSER_DRIVE_CONFIRM_TD_MEMBERS_GAIN_ACCESS);
  SET_STRING("DRIVE_CONFIRM_OWNERSHIP_TRANSFER",
             IDS_FILE_BROWSER_DRIVE_CONFIRM_OWNERSHIP_TRANSFER);
  SET_STRING("CONFIRM_MOVE_BUTTON_LABEL",
             IDS_FILE_BROWSER_CONFIRM_MOVE_BUTTON_LABEL);
  SET_STRING("CONFIRM_COPY_BUTTON_LABEL",
             IDS_FILE_BROWSER_CONFIRM_COPY_BUTTON_LABEL);
  SET_STRING("DRIVE_LEARN_MORE", IDS_LEARN_MORE);
  SET_STRING("DRIVE_MENU_HELP", IDS_FILE_BROWSER_DRIVE_MENU_HELP);
  SET_STRING("DRIVE_MOBILE_CONNECTION_OPTION",
             IDS_FILE_BROWSER_DRIVE_MOBILE_CONNECTION_OPTION);
  SET_STRING("DRIVE_MY_DRIVE_LABEL", IDS_FILE_BROWSER_DRIVE_MY_DRIVE_LABEL);
  SET_STRING("DRIVE_TEAM_DRIVES_LABEL",
             IDS_FILE_BROWSER_DRIVE_TEAM_DRIVES_LABEL);
  SET_STRING("DRIVE_NOT_REACHED", IDS_FILE_BROWSER_DRIVE_NOT_REACHED);
  SET_STRING("DRIVE_OFFLINE_COLLECTION_LABEL",
             IDS_FILE_BROWSER_DRIVE_OFFLINE_COLLECTION_LABEL);
  SET_STRING("DRIVE_OUT_OF_SPACE_HEADER",
             IDS_FILE_BROWSER_DRIVE_OUT_OF_SPACE_HEADER);
  SET_STRING("DRIVE_OUT_OF_SPACE_MESSAGE",
             IDS_FILE_BROWSER_DRIVE_OUT_OF_SPACE_MESSAGE);
  SET_STRING("DRIVE_RECENT_COLLECTION_LABEL",
             IDS_FILE_BROWSER_DRIVE_RECENT_COLLECTION_LABEL);
  SET_STRING("DRIVE_SHARED_WITH_ME_COLLECTION_LABEL",
             IDS_FILE_BROWSER_DRIVE_SHARED_WITH_ME_COLLECTION_LABEL);
  SET_STRING("DRIVE_SHARE_TYPE_CAN_COMMENT",
             IDS_FILE_BROWSER_DRIVE_SHARE_TYPE_CAN_COMMENT);
  SET_STRING("DRIVE_SHARE_TYPE_CAN_EDIT",
             IDS_FILE_BROWSER_DRIVE_SHARE_TYPE_CAN_EDIT);
  SET_STRING("DRIVE_SHARE_TYPE_CAN_VIEW",
             IDS_FILE_BROWSER_DRIVE_SHARE_TYPE_CAN_VIEW);
  SET_STRING("DRIVE_SHOW_HOSTED_FILES_OPTION",
             IDS_FILE_BROWSER_DRIVE_SHOW_HOSTED_FILES_OPTION);
  SET_STRING("DRIVE_SPACE_AVAILABLE_LONG",
             IDS_FILE_BROWSER_DRIVE_SPACE_AVAILABLE_LONG);
  SET_STRING("DRIVE_VISIT_DRIVE_GOOGLE_COM",
             IDS_FILE_BROWSER_DRIVE_VISIT_DRIVE_GOOGLE_COM);
  SET_STRING("DRIVE_WELCOME_CHECK_ELIGIBILITY",
             IDS_FILE_BROWSER_DRIVE_WELCOME_CHECK_ELIGIBILITY);
  SET_STRING("DRIVE_WELCOME_DISMISS", IDS_FILE_BROWSER_DRIVE_WELCOME_DISMISS);
  SET_STRING("DRIVE_WELCOME_TEXT_LONG",
             IDS_FILE_BROWSER_DRIVE_WELCOME_TEXT_LONG);
  SET_STRING("DRIVE_WELCOME_TEXT_SHORT",
             IDS_FILE_BROWSER_DRIVE_WELCOME_TEXT_SHORT);
  SET_STRING("DRIVE_WELCOME_TITLE", IDS_FILE_BROWSER_DRIVE_WELCOME_TITLE);
  SET_STRING("DRIVE_WELCOME_TITLE_ALTERNATIVE",
             IDS_FILE_BROWSER_DRIVE_WELCOME_TITLE_ALTERNATIVE);
  SET_STRING("DRIVE_WELCOME_TITLE_ALTERNATIVE_1TB",
             IDS_FILE_BROWSER_DRIVE_WELCOME_TITLE_ALTERNATIVE_1TB);
  SET_STRING("SYNC_DELETE_WITHOUT_PERMISSION_ERROR",
             IDS_FILE_BROWSER_SYNC_DELETE_WITHOUT_PERMISSION_ERROR);
  SET_STRING("SYNC_FILE_NAME", IDS_FILE_BROWSER_SYNC_FILE_NAME);
  SET_STRING("SYNC_FILE_NUMBER", IDS_FILE_BROWSER_SYNC_FILE_NUMBER);
  SET_STRING("SYNC_MISC_ERROR", IDS_FILE_BROWSER_SYNC_MISC_ERROR);
  SET_STRING("SYNC_NO_SERVER_SPACE", IDS_FILE_BROWSER_SYNC_NO_SERVER_SPACE);
  SET_STRING("SYNC_PROGRESS_SUMMARY", IDS_FILE_BROWSER_SYNC_PROGRESS_SUMMARY);
  SET_STRING("SYNC_SERVICE_UNAVAILABLE_ERROR",
             IDS_FILE_BROWSER_SYNC_SERVICE_UNAVAILABLE_ERROR);
}

void AddStringsForMediaView(base::DictionaryValue* dict) {
  SET_STRING("MEDIA_VIEW_AUDIO_ROOT_LABEL",
             IDS_FILE_BROWSER_MEDIA_VIEW_AUDIO_ROOT_LABEL);
  SET_STRING("MEDIA_VIEW_IMAGES_ROOT_LABEL",
             IDS_FILE_BROWSER_MEDIA_VIEW_IMAGES_ROOT_LABEL);
  SET_STRING("MEDIA_VIEW_VIDEOS_ROOT_LABEL",
             IDS_FILE_BROWSER_MEDIA_VIEW_VIDEOS_ROOT_LABEL);
}

void AddStringsForGallery(base::DictionaryValue* dict) {
  SET_STRING("GALLERY_ASPECT_RATIO_16_9",
             IDS_FILE_BROWSER_GALLERY_ASPECT_RATIO_16_9);
  SET_STRING("GALLERY_ASPECT_RATIO_1_1",
             IDS_FILE_BROWSER_GALLERY_ASPECT_RATIO_1_1);
  SET_STRING("GALLERY_ASPECT_RATIO_6_4",
             IDS_FILE_BROWSER_GALLERY_ASPECT_RATIO_6_4);
  SET_STRING("GALLERY_ASPECT_RATIO_7_5",
             IDS_FILE_BROWSER_GALLERY_ASPECT_RATIO_7_5);
  SET_STRING("GALLERY_AUTOFIX", IDS_FILE_BROWSER_GALLERY_AUTOFIX);
  SET_STRING("GALLERY_BRIGHTNESS", IDS_FILE_BROWSER_GALLERY_BRIGHTNESS);
  SET_STRING("GALLERY_CANCEL_LABEL", IDS_FILE_BROWSER_CANCEL_LABEL);
  SET_STRING("GALLERY_CONFIRM_DELETE_ONE", IDS_FILE_BROWSER_CONFIRM_DELETE_ONE);
  SET_STRING("GALLERY_CONFIRM_DELETE_SOME",
             IDS_FILE_BROWSER_CONFIRM_DELETE_SOME);
  SET_STRING("GALLERY_CONTRAST", IDS_FILE_BROWSER_GALLERY_CONTRAST);
  SET_STRING("GALLERY_CROP", IDS_FILE_BROWSER_GALLERY_CROP);
  SET_STRING("GALLERY_DELETE", IDS_FILE_BROWSER_GALLERY_DELETE);
  SET_STRING("GALLERY_EDIT", IDS_FILE_BROWSER_GALLERY_EDIT);
  SET_STRING("GALLERY_EXIT", IDS_FILE_BROWSER_GALLERY_EXIT);
  SET_STRING("GALLERY_ENTER_WHEN_DONE",
             IDS_FILE_BROWSER_GALLERY_ENTER_WHEN_DONE);
  SET_STRING("GALLERY_EXPOSURE", IDS_FILE_BROWSER_GALLERY_EXPOSURE);
  SET_STRING("GALLERY_FILE_EXISTS", IDS_FILE_BROWSER_GALLERY_FILE_EXISTS);
  SET_STRING("GALLERY_FIXED", IDS_FILE_BROWSER_GALLERY_FIXED);
  SET_STRING("GALLERY_FIXRATIO", IDS_FILE_BROWSER_GALLERY_FIXRATIO);
  SET_STRING("GALLERY_HEIGHT", IDS_FILE_BROWSER_GALLERY_HEIGHT);
  SET_STRING("GALLERY_IMAGE_ERROR", IDS_FILE_BROWSER_GALLERY_IMAGE_ERROR);
  SET_STRING("GALLERY_IMAGE_OFFLINE", IDS_FILE_BROWSER_GALLERY_IMAGE_OFFLINE);
  SET_STRING("GALLERY_RESIZE", IDS_FILE_BROWSER_GALLERY_RESIZE);
  SET_STRING("GALLERY_INVALIDVALUE", IDS_FILE_BROWSER_GALLERY_INVALIDVALUE);
  SET_STRING("GALLERY_ITEMS_SELECTED", IDS_FILE_BROWSER_GALLERY_ITEMS_SELECTED);
  SET_STRING("GALLERY_NO_IMAGES", IDS_FILE_BROWSER_GALLERY_NO_IMAGES);
  SET_STRING("GALLERY_OK_LABEL", IDS_FILE_BROWSER_OK_LABEL);
  SET_STRING("GALLERY_OVERWRITE_BUBBLE",
             IDS_FILE_BROWSER_GALLERY_OVERWRITE_BUBBLE);
  SET_STRING("GALLERY_OVERWRITE_ORIGINAL",
             IDS_FILE_BROWSER_GALLERY_OVERWRITE_ORIGINAL);
  SET_STRING("GALLERY_PRINT", IDS_FILE_BROWSER_GALLERY_PRINT);
  SET_STRING("GALLERY_READONLY_WARNING",
             IDS_FILE_BROWSER_GALLERY_READONLY_WARNING);
  SET_STRING("GALLERY_READONLY_AND_NON_WRITABLE_FORMAT_WARNING",
             IDS_FILE_BROWSER_GALLERY_READONLY_AND_NON_WRITABLE_FORMAT_WARNING);
  SET_STRING("GALLERY_NON_WRITABLE_FORMAT_WARNING",
             IDS_FILE_BROWSER_GALLERY_NON_WRITABLE_FORMAT_WARNING);
  SET_STRING("GALLERY_REDO", IDS_FILE_BROWSER_GALLERY_REDO);
  SET_STRING("GALLERY_ROTATE_LEFT", IDS_FILE_BROWSER_GALLERY_ROTATE_LEFT);
  SET_STRING("GALLERY_ROTATE_RIGHT", IDS_FILE_BROWSER_GALLERY_ROTATE_RIGHT);
  SET_STRING("GALLERY_SAVED", IDS_FILE_BROWSER_GALLERY_SAVED);
  SET_STRING("GALLERY_SAVE_FAILED", IDS_FILE_BROWSER_GALLERY_SAVE_FAILED);
  SET_STRING("GALLERY_SHARE", IDS_FILE_BROWSER_GALLERY_SHARE);
  SET_STRING("GALLERY_SLIDE", IDS_FILE_BROWSER_GALLERY_SLIDE);
  SET_STRING("GALLERY_SLIDESHOW", IDS_FILE_BROWSER_GALLERY_SLIDESHOW);
  SET_STRING("GALLERY_THUMBNAIL", IDS_FILE_BROWSER_GALLERY_THUMBNAIL);
  SET_STRING("GALLERY_UNDO", IDS_FILE_BROWSER_GALLERY_UNDO);
  SET_STRING("GALLERY_DONE", IDS_FILE_BROWSER_GALLERY_DONE);
  SET_STRING("GALLERY_WIDTH", IDS_FILE_BROWSER_GALLERY_WIDTH);
}

void AddStringsForMediaPlayer(base::DictionaryValue* dict) {
  SET_STRING("MEDIA_PLAYER_PLAY_BUTTON_LABEL",
             IDS_MEDIA_PLAYER_PLAY_BUTTON_LABEL);
  SET_STRING("MEDIA_PLAYER_PAUSE_BUTTON_LABEL",
             IDS_MEDIA_PLAYER_PAUSE_BUTTON_LABEL);
  SET_STRING("MEDIA_PLAYER_MUTE_BUTTON_LABEL",
             IDS_MEDIA_PLAYER_MUTE_BUTTON_LABEL);
  SET_STRING("MEDIA_PLAYER_UNMUTE_BUTTON_LABEL",
             IDS_MEDIA_PLAYER_UNMUTE_BUTTON_LABEL);
  SET_STRING("MEDIA_PLAYER_PREVIOUS_BUTTON_LABEL",
             IDS_MEDIA_PLAYER_PREVIOUS_BUTTON_LABEL);
  SET_STRING("MEDIA_PLAYER_NEXT_BUTTON_LABEL",
             IDS_MEDIA_PLAYER_NEXT_BUTTON_LABEL);
  SET_STRING("MEDIA_PLAYER_SEEK_SLIDER_LABEL",
             IDS_MEDIA_PLAYER_SEEK_SLIDER_LABEL);
  SET_STRING("MEDIA_PLAYER_VOLUME_SLIDER_LABEL",
             IDS_MEDIA_PLAYER_VOLUME_SLIDER_LABEL);
}

void AddStringsForVideoPlayer(base::DictionaryValue* dict) {
  SET_STRING("VIDEO_PLAYER_LOOPED_MODE", IDS_VIDEO_PLAYER_LOOPED_MODE);
  SET_STRING("VIDEO_PLAYER_PLAYBACK_ERROR", IDS_VIDEO_PLAYER_PLAYBACK_ERROR);
  SET_STRING("VIDEO_PLAYER_PLAYING_ON", IDS_VIDEO_PLAYER_PLAYING_ON);
  SET_STRING("VIDEO_PLAYER_PLAY_ON", IDS_VIDEO_PLAYER_PLAY_ON);
  SET_STRING("VIDEO_PLAYER_PLAY_THIS_COMPUTER",
             IDS_VIDEO_PLAYER_PLAY_THIS_COMPUTER);
  SET_STRING("VIDEO_PLAYER_VIDEO_FILE_UNSUPPORTED",
             IDS_VIDEO_PLAYER_VIDEO_FILE_UNSUPPORTED);
  SET_STRING("VIDEO_PLAYER_VIDEO_FILE_UNSUPPORTED_FOR_CAST",
             IDS_VIDEO_PLAYER_VIDEO_FILE_UNSUPPORTED_FOR_CAST);
  SET_STRING("VIDEO_PLAYER_FULL_SCREEN_BUTTON_LABEL",
             IDS_VIDEO_PLAYER_FULL_SCREEN_BUTTON_LABEL);
  SET_STRING("VIDEO_PLAYER_EXIT_FULL_SCREEN_BUTTON_LABEL",
             IDS_VIDEO_PLAYER_EXIT_FULL_SCREEN_BUTTON_LABEL);
  SET_STRING("VIDEO_PLAYER_ENABLE_SUBTITLES_BUTTON_LABEL",
             IDS_VIDEO_PLAYER_ENABLE_SUBTITLES_BUTTON_LABEL);
  SET_STRING("VIDEO_PLAYER_DISABLE_SUBTITLES_BUTTON_LABEL",
             IDS_VIDEO_PLAYER_DISABLE_SUBTITLES_BUTTON_LABEL);
}

void AddStringsForAudioPlayer(base::DictionaryValue* dict) {
  SET_STRING("AUDIO_ERROR", IDS_FILE_BROWSER_AUDIO_ERROR);
  SET_STRING("AUDIO_OFFLINE", IDS_FILE_BROWSER_AUDIO_OFFLINE);
  SET_STRING("AUDIO_PLAYER_DEFAULT_ARTIST",
             IDS_FILE_BROWSER_AUDIO_PLAYER_DEFAULT_ARTIST);
  SET_STRING("AUDIO_PLAYER_TITLE", IDS_FILE_BROWSER_AUDIO_PLAYER_TITLE);
  SET_STRING("AUDIO_PLAYER_SHUFFLE_BUTTON_LABEL",
             IDS_AUDIO_PLAYER_SHUFFLE_BUTTON_LABEL);
  SET_STRING("AUDIO_PLAYER_REPEAT_BUTTON_LABEL",
             IDS_AUDIO_PLAYER_REPEAT_BUTTON_LABEL);
  SET_STRING("AUDIO_PLAYER_OPEN_PLAY_LIST_BUTTON_LABEL",
             IDS_AUDIO_PLAYER_OPEN_PLAY_LIST_BUTTON_LABEL);
}

void AddStringsForCloudImport(base::DictionaryValue* dict) {
  SET_STRING("CLOUD_IMPORT_TITLE", IDS_FILE_BROWSER_CLOUD_IMPORT_TITLE);
  SET_STRING("CLOUD_IMPORT_DESTINATION_FOLDER",
             IDS_FILE_BROWSER_CLOUD_DESTINATION_FOLDER);
  SET_STRING("CLOUD_IMPORT_DESCRIPTION",
             IDS_FILE_BROWSER_CLOUD_IMPORT_DESCRIPTION);
  SET_STRING("CLOUD_IMPORT_START", IDS_FILE_BROWSER_CLOUD_IMPORT_START);
  SET_STRING("CLOUD_IMPORT_SHOW_DETAILS",
             IDS_FILE_BROWSER_CLOUD_IMPORT_SHOW_DETAILS);
  SET_STRING("CLOUD_IMPORT_COMMAND", IDS_FILE_BROWSER_CLOUD_IMPORT_COMMAND);
  SET_STRING("CLOUD_IMPORT_CANCEL_COMMAND",
             IDS_FILE_BROWSER_CLOUD_IMPORT_CANCEL_COMMAND);
  SET_STRING("CLOUD_IMPORT_ERROR_ITEM",
             IDS_FILE_BROWSER_CLOUD_IMPORT_ERROR_ITEM);

  SET_STRING("CLOUD_IMPORT_ONE_FILE", IDS_FILE_BROWSER_CLOUD_IMPORT_ONE_FILE);
  SET_STRING("CLOUD_IMPORT_MULTIPLE_FILES",
             IDS_FILE_BROWSER_CLOUD_IMPORT_MULTIPLE_FILES);
  SET_STRING("CLOUD_IMPORT_STATUS_READY",
             IDS_FILE_BROWSER_CLOUD_IMPORT_STATUS_DONE);
  SET_STRING("CLOUD_IMPORT_STATUS_IMPORTING",
             IDS_FILE_BROWSER_CLOUD_IMPORT_STATUS_IMPORTING);
  SET_STRING("CLOUD_IMPORT_STATUS_INSUFFICIENT_CLOUD_SPACE",
             IDS_FILE_BROWSER_CLOUD_IMPORT_STATUS_INSUFFICIENT_CLOUD_SPACE);
  SET_STRING("CLOUD_IMPORT_STATUS_INSUFFICIENT_LOCAL_SPACE",
             IDS_FILE_BROWSER_CLOUD_IMPORT_STATUS_INSUFFICIENT_LOCAL_SPACE);
  SET_STRING("CLOUD_IMPORT_STATUS_NO_MEDIA",
             IDS_FILE_BROWSER_CLOUD_IMPORT_STATUS_NO_MEDIA);
  SET_STRING("CLOUD_IMPORT_STATUS_READY",
             IDS_FILE_BROWSER_CLOUD_IMPORT_STATUS_READY);
  SET_STRING("CLOUD_IMPORT_STATUS_SCANNING",
             IDS_FILE_BROWSER_CLOUD_IMPORT_STATUS_SCANNING);
  SET_STRING("CLOUD_IMPORT_ITEMS_REMAINING",
             IDS_FILE_BROWSER_CLOUD_IMPORT_ITEMS_REMAINING);

  SET_STRING("CLOUD_IMPORT_TOOLTIP_READY",
             IDS_FILE_BROWSER_CLOUD_IMPORT_TOOLTIP_DONE);
  SET_STRING("CLOUD_IMPORT_TOOLTIP_IMPORTING",
             IDS_FILE_BROWSER_CLOUD_IMPORT_TOOLTIP_IMPORTING);
  SET_STRING("CLOUD_IMPORT_TOOLTIP_INSUFFICIENT_CLOUD_SPACE",
             IDS_FILE_BROWSER_CLOUD_IMPORT_TOOLTIP_INSUFFICIENT_CLOUD_SPACE);
  SET_STRING("CLOUD_IMPORT_TOOLTIP_INSUFFICIENT_LOCAL_SPACE",
             IDS_FILE_BROWSER_CLOUD_IMPORT_TOOLTIP_INSUFFICIENT_LOCAL_SPACE);
  SET_STRING("CLOUD_IMPORT_TOOLTIP_NO_MEDIA",
             IDS_FILE_BROWSER_CLOUD_IMPORT_TOOLTIP_NO_MEDIA);
  SET_STRING("CLOUD_IMPORT_TOOLTIP_READY",
             IDS_FILE_BROWSER_CLOUD_IMPORT_TOOLTIP_READY);
  SET_STRING("CLOUD_IMPORT_TOOLTIP_SCANNING",
             IDS_FILE_BROWSER_CLOUD_IMPORT_TOOLTIP_SCANNING);
}

void AddStringsForCrUiMenuItemShortcuts(base::DictionaryValue* dict) {
  // Shortcut key names: used from cr.ui.MenuItem.updateShortcut_.
  SET_STRING("SHORTCUT_ALT", IDS_FILE_BROWSER_SHORTCUT_ALT);
  SET_STRING("SHORTCUT_BACKSPACE", IDS_FILE_BROWSER_SHORTCUT_BACKSPACE);
  SET_STRING("SHORTCUT_CTRL", IDS_FILE_BROWSER_SHORTCUT_CTRL);
  SET_STRING("SHORTCUT_ENTER", IDS_FILE_BROWSER_SHORTCUT_ENTER);
  SET_STRING("SHORTCUT_META", IDS_FILE_BROWSER_SHORTCUT_META);
  SET_STRING("SHORTCUT_SHIFT", IDS_FILE_BROWSER_SHORTCUT_SHIFT);
  SET_STRING("SHORTCUT_SPACE", IDS_FILE_BROWSER_SHORTCUT_SPACE);
}

void AddStringsForFileErrors(base::DictionaryValue* dict) {
  SET_STRING("FILE_ERROR_GENERIC", IDS_FILE_BROWSER_FILE_ERROR_GENERIC);
  SET_STRING("FILE_ERROR_INVALID_MODIFICATION",
             IDS_FILE_BROWSER_FILE_ERROR_INVALID_MODIFICATION);
  SET_STRING("FILE_ERROR_INVALID_STATE",
             IDS_FILE_BROWSER_FILE_ERROR_INVALID_STATE);
  SET_STRING("FILE_ERROR_NOT_FOUND", IDS_FILE_BROWSER_FILE_ERROR_NOT_FOUND);
  SET_STRING("FILE_ERROR_NOT_READABLE",
             IDS_FILE_BROWSER_FILE_ERROR_NOT_READABLE);
  SET_STRING("FILE_ERROR_NO_MODIFICATION_ALLOWED",
             IDS_FILE_BROWSER_FILE_ERROR_NO_MODIFICATION_ALLOWED);
  SET_STRING("FILE_ERROR_PATH_EXISTS", IDS_FILE_BROWSER_FILE_ERROR_PATH_EXISTS);
  SET_STRING("FILE_ERROR_QUOTA_EXCEEDED",
             IDS_FILE_BROWSER_FILE_ERROR_QUOTA_EXCEEDED);
  SET_STRING("FILE_ERROR_SECURITY", IDS_FILE_BROWSER_FILE_ERROR_SECURITY);
}

void AddStringsForZipArchiver(base::DictionaryValue* dict) {
  SET_STRING("ZIP_ARCHIVER_DESCRIPTION", IDS_ZIP_ARCHIVER_DESCRIPTION);
  SET_STRING("ZIP_ARCHIVER_MOUNTING_MESSAGE",
             IDS_ZIP_ARCHIVER_MOUNTING_MESSAGE);
  SET_STRING("ZIP_ARCHIVER_NAME", IDS_ZIP_ARCHIVER_NAME);
  SET_STRING("ZIP_ARCHIVER_OTHER_ERROR_MESSAGE",
             IDS_ZIP_ARCHIVER_OTHER_ERROR_MESSAGE);
  SET_STRING("ZIP_ARCHIVER_PACKING_CANCEL_BUTTON_LABEL",
             IDS_ZIP_ARCHIVER_PACKING_CANCEL_BUTTON_LABEL);
  SET_STRING("ZIP_ARCHIVER_PACKING_DEFERRED_MESSAGE",
             IDS_ZIP_ARCHIVER_PACKING_DEFERRED_MESSAGE);
  SET_STRING("ZIP_ARCHIVER_PACKING_ERROR_MESSAGE",
             IDS_ZIP_ARCHIVER_PACKING_ERROR_MESSAGE);
  SET_STRING("ZIP_ARCHIVER_PACKING_PROGRESS_MESSAGE",
             IDS_ZIP_ARCHIVER_PACKING_PROGRESS_MESSAGE);
  SET_STRING("ZIP_ARCHIVER_PASSPHRASE_ACCEPT",
             IDS_ZIP_ARCHIVER_PASSPHRASE_ACCEPT);
  SET_STRING("ZIP_ARCHIVER_PASSPHRASE_CANCEL",
             IDS_ZIP_ARCHIVER_PASSPHRASE_CANCEL);
  SET_STRING("ZIP_ARCHIVER_PASSPHRASE_INPUT_LABEL",
             IDS_ZIP_ARCHIVER_PASSPHRASE_INPUT_LABEL);
  SET_STRING("ZIP_ARCHIVER_PASSPHRASE_REMEMBER",
             IDS_ZIP_ARCHIVER_PASSPHRASE_REMEMBER);
  SET_STRING("ZIP_ARCHIVER_PASSPHRASE_TITLE",
             IDS_ZIP_ARCHIVER_PASSPHRASE_TITLE);
}

}  // namespace

namespace extensions {

FileManagerPrivateGetStringsFunction::FileManagerPrivateGetStringsFunction() =
    default;

FileManagerPrivateGetStringsFunction::~FileManagerPrivateGetStringsFunction() =
    default;

ExtensionFunction::ResponseAction FileManagerPrivateGetStringsFunction::Run() {
  std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());

  AddStringsForDrive(dict.get());
  AddStringsForMediaView(dict.get());
  AddStringsForFileTypes(dict.get());
  AddStringsForGallery(dict.get());
  AddStringsForMediaPlayer(dict.get());
  AddStringsForVideoPlayer(dict.get());
  AddStringsForAudioPlayer(dict.get());
  AddStringsForCloudImport(dict.get());
  AddStringsForCrUiMenuItemShortcuts(dict.get());
  AddStringsForFileErrors(dict.get());
  AddStringsForZipArchiver(dict.get());

  SET_STRING("ADD_NEW_SERVICES_BUTTON_LABEL",
             IDS_FILE_BROWSER_ADD_NEW_SERVICES_BUTTON_LABEL);
  SET_STRING("ALL_FILES_FILTER", IDS_FILE_BROWSER_ALL_FILES_FILTER);
  SET_STRING("ARCHIVE_MOUNT_FAILED", IDS_FILE_BROWSER_ARCHIVE_MOUNT_FAILED);
  SET_STRING("CALCULATING_SIZE", IDS_FILE_BROWSER_CALCULATING_SIZE);
  SET_STRING("CANCEL_LABEL", IDS_FILE_BROWSER_CANCEL_LABEL);
  SET_STRING("CHANGE_DEFAULT_CAPTION", IDS_FILE_BROWSER_CHANGE_DEFAULT_CAPTION);
  SET_STRING("CHANGE_DEFAULT_MENU_ITEM",
             IDS_FILE_BROWSER_CHANGE_DEFAULT_MENU_ITEM);
  SET_STRING("CLOSE_VOLUME_BUTTON_LABEL",
             IDS_FILE_BROWSER_CLOSE_VOLUME_BUTTON_LABEL);
  SET_STRING("CONFIGURE_VOLUME_BUTTON_LABEL",
             IDS_FILE_BROWSER_CONFIGURE_VOLUME_BUTTON_LABEL);
  SET_STRING("CONFIRM_MOBILE_DATA_USE",
             IDS_FILE_BROWSER_CONFIRM_MOBILE_DATA_USE);
  SET_STRING("CONFIRM_MOBILE_DATA_USE_PLURAL",
             IDS_FILE_BROWSER_CONFIRM_MOBILE_DATA_USE_PLURAL);
  SET_STRING("CONFIRM_OVERWRITE_FILE", IDS_FILE_BROWSER_CONFIRM_OVERWRITE_FILE);
  SET_STRING("CONFLICT_DIALOG_APPLY_TO_ALL",
             IDS_FILE_BROWSER_CONFLICT_DIALOG_APPLY_TO_ALL);
  SET_STRING("CONFLICT_DIALOG_KEEP_BOTH",
             IDS_FILE_BROWSER_CONFLICT_DIALOG_KEEP_BOTH);
  SET_STRING("CONFLICT_DIALOG_MESSAGE",
             IDS_FILE_BROWSER_CONFLICT_DIALOG_MESSAGE);
  SET_STRING("CONFLICT_DIALOG_REPLACE",
             IDS_FILE_BROWSER_CONFLICT_DIALOG_REPLACE);
  SET_STRING("COPY_BUTTON_LABEL", IDS_FILE_BROWSER_COPY_BUTTON_LABEL);
  SET_STRING("COPY_FILESYSTEM_ERROR", IDS_FILE_BROWSER_COPY_FILESYSTEM_ERROR);
  SET_STRING("COPY_FILE_NAME", IDS_FILE_BROWSER_COPY_FILE_NAME);
  SET_STRING("COPY_ITEMS_REMAINING", IDS_FILE_BROWSER_COPY_ITEMS_REMAINING);
  SET_STRING("COPY_PROGRESS_SUMMARY", IDS_FILE_BROWSER_COPY_PROGRESS_SUMMARY);
  SET_STRING("COPY_SOURCE_NOT_FOUND_ERROR",
             IDS_FILE_BROWSER_COPY_SOURCE_NOT_FOUND_ERROR);
  SET_STRING("COPY_TARGET_EXISTS_ERROR",
             IDS_FILE_BROWSER_COPY_TARGET_EXISTS_ERROR);
  SET_STRING("COPY_UNEXPECTED_ERROR", IDS_FILE_BROWSER_COPY_UNEXPECTED_ERROR);
  SET_STRING("CREATE_FOLDER_SHORTCUT_BUTTON_LABEL",
             IDS_FILE_BROWSER_CREATE_FOLDER_SHORTCUT_BUTTON_LABEL);
  SET_STRING("CUT_BUTTON_LABEL", IDS_FILE_BROWSER_CUT_BUTTON_LABEL);
  SET_STRING("DATE_COLUMN_LABEL", IDS_FILE_BROWSER_DATE_COLUMN_LABEL);
  SET_STRING("DEFAULT_NEW_FOLDER_NAME",
             IDS_FILE_BROWSER_DEFAULT_NEW_FOLDER_NAME);
  SET_STRING("DEFAULT_TASK_LABEL", IDS_FILE_BROWSER_DEFAULT_TASK_LABEL);
  SET_STRING("DELETE_BUTTON_LABEL", IDS_FILE_BROWSER_DELETE_BUTTON_LABEL);
  SET_STRING("DELETE_ERROR", IDS_FILE_BROWSER_DELETE_ERROR);
  SET_STRING("DELETE_FILE_NAME", IDS_FILE_BROWSER_DELETE_FILE_NAME);
  SET_STRING("DELETE_ITEMS_REMAINING", IDS_FILE_BROWSER_DELETE_ITEMS_REMAINING);
  SET_STRING("DELETE_PROGRESS_SUMMARY",
             IDS_FILE_BROWSER_DELETE_PROGRESS_SUMMARY);
  SET_STRING("DEVICE_HARD_UNPLUGGED_MESSAGE",
             IDS_DEVICE_HARD_UNPLUGGED_MESSAGE);
  SET_STRING("DEVICE_HARD_UNPLUGGED_TITLE", IDS_DEVICE_HARD_UNPLUGGED_TITLE);
  SET_STRING("DEVICE_UNKNOWN_BUTTON_LABEL", IDS_DEVICE_UNKNOWN_BUTTON_LABEL);
  SET_STRING("DEVICE_UNKNOWN_DEFAULT_MESSAGE",
             IDS_DEVICE_UNKNOWN_DEFAULT_MESSAGE);
  SET_STRING("DEVICE_UNKNOWN_MESSAGE", IDS_DEVICE_UNKNOWN_MESSAGE);
  SET_STRING("DEVICE_UNSUPPORTED_DEFAULT_MESSAGE",
             IDS_DEVICE_UNSUPPORTED_DEFAULT_MESSAGE);
  SET_STRING("DEVICE_UNSUPPORTED_MESSAGE", IDS_DEVICE_UNSUPPORTED_MESSAGE);
  SET_STRING("DEVICE_WRITE_PROTECTED",
             IDS_FILE_BROWSER_DROP_TARGET_DEVICE_WRITE_PROTECTED);
  SET_STRING("DEVICE_ACCESS_RESTRICTED",
             IDS_FILE_BROWSER_DROP_TARGET_ACCESS_RESTRICTED);
  SET_STRING("DIRECTORY_ALREADY_EXISTS",
             IDS_FILE_BROWSER_DIRECTORY_ALREADY_EXISTS);
  SET_STRING("DISABLED_MOBILE_SYNC_NOTIFICATION_ENABLE_BUTTON",
             IDS_FILE_BROWSER_DISABLED_MOBILE_SYNC_NOTIFICATION_ENABLE_BUTTON);
  SET_STRING("DISABLED_MOBILE_SYNC_NOTIFICATION_MESSAGE",
             IDS_FILE_BROWSER_DISABLED_MOBILE_SYNC_NOTIFICATION_MESSAGE);
  SET_STRING("DOWNLOADS_DIRECTORY_LABEL",
             IDS_FILE_BROWSER_DOWNLOADS_DIRECTORY_LABEL);
  SET_STRING("DOWNLOADS_DIRECTORY_WARNING",
             IDS_FILE_BROWSER_DOWNLOADS_DIRECTORY_WARNING);
  SET_STRING("DRAGGING_MULTIPLE_ITEMS",
             IDS_FILE_BROWSER_DRAGGING_MULTIPLE_ITEMS);
  SET_STRING("DROP_TARGET_FOLDER_NO_MOVE_PERMISSION",
             IDS_FILE_BROWSER_DROP_TARGET_FOLDER_NO_MOVE_PERMISSION);
  SET_STRING("ERROR_CREATING_FOLDER", IDS_FILE_BROWSER_ERROR_CREATING_FOLDER);
  SET_STRING("ERROR_HIDDEN_NAME", IDS_FILE_BROWSER_ERROR_HIDDEN_NAME);
  SET_STRING("ERROR_INVALID_CHARACTER",
             IDS_FILE_BROWSER_ERROR_INVALID_CHARACTER);
  SET_STRING("ERROR_EXTERNAL_DRIVE_INVALID_CHARACTER",
             IDS_FILE_BROWSER_ERROR_EXTERNAL_DRIVE_INVALID_CHARACTER);
  SET_STRING("ERROR_INVALID_WALLPAPER",
             IDS_WALLPAPER_MANAGER_INVALID_WALLPAPER);
  SET_STRING("ERROR_LINUX_FILES_CONNECTION",
             IDS_FILE_BROWSER_ERROR_LINUX_FILES_CONNECTION);
  SET_STRING("ERROR_LONG_NAME", IDS_FILE_BROWSER_ERROR_LONG_NAME);
  SET_STRING("ERROR_EXTERNAL_DRIVE_LONG_NAME",
             IDS_FILE_BROWSER_ERROR_EXTERNAL_DRIVE_LONG_NAME);
  SET_STRING("ERROR_PROGRESS_SUMMARY", IDS_FILE_BROWSER_ERROR_PROGRESS_SUMMARY);
  SET_STRING("ERROR_PROGRESS_SUMMARY_PLURAL",
             IDS_FILE_BROWSER_ERROR_PROGRESS_SUMMARY_PLURAL);
  SET_STRING("ERROR_RENAMING", IDS_FILE_BROWSER_ERROR_RENAMING);
  SET_STRING("ERROR_RESERVED_NAME", IDS_FILE_BROWSER_ERROR_RESERVED_NAME);
  SET_STRING("ERROR_WHITESPACE_NAME", IDS_FILE_BROWSER_ERROR_WHITESPACE_NAME);
  SET_STRING("EXTERNAL_STORAGE_DISABLED_MESSAGE",
             IDS_EXTERNAL_STORAGE_DISABLED_MESSAGE);
  SET_STRING("FAILED_SPACE_INFO", IDS_FILE_BROWSER_FAILED_SPACE_INFO);
  SET_STRING("FILENAME_LABEL", IDS_FILE_BROWSER_FILENAME_LABEL);
  SET_STRING("FILE_ALREADY_EXISTS", IDS_FILE_BROWSER_FILE_ALREADY_EXISTS);
  SET_STRING("FORMATTING_FINISHED_FAILURE_MESSAGE",
             IDS_FORMATTING_FINISHED_FAILURE_MESSAGE);
  SET_STRING("FORMATTING_FINISHED_SUCCESS_MESSAGE",
             IDS_FORMATTING_FINISHED_SUCCESS_MESSAGE);
  SET_STRING("FORMATTING_OF_DEVICE_FAILED_TITLE",
             IDS_FORMATTING_OF_DEVICE_FAILED_TITLE);
  SET_STRING("FORMATTING_OF_DEVICE_FINISHED_TITLE",
             IDS_FORMATTING_OF_DEVICE_FINISHED_TITLE);
  SET_STRING("FORMATTING_OF_DEVICE_PENDING_MESSAGE",
             IDS_FORMATTING_OF_DEVICE_PENDING_MESSAGE);
  SET_STRING("FORMATTING_OF_DEVICE_PENDING_TITLE",
             IDS_FORMATTING_OF_DEVICE_PENDING_TITLE);
  SET_STRING("FORMATTING_WARNING", IDS_FILE_BROWSER_FORMATTING_WARNING);
  SET_STRING("RENAMING_OF_DEVICE_FINISHED_FAILURE_MESSAGE",
             IDS_RENAMING_OF_DEVICE_FINISHED_FAILURE_MESSAGE);
  SET_STRING("RENAMING_OF_DEVICE_FAILED_TITLE",
             IDS_RENAMING_OF_DEVICE_FAILED_TITLE);
  SET_STRING("FORMAT_DEVICE_BUTTON_LABEL",
             IDS_FILE_BROWSER_FORMAT_DEVICE_BUTTON_LABEL);
  SET_STRING("SHARE_BUTTON_TOOLTIP", IDS_FILE_BROWSER_SHARE_BUTTON_TOOLTIP);
  SET_STRING("SORT_BUTTON_TOOLTIP", IDS_FILE_BROWSER_SORT_BUTTON_TOOLTIP);
  SET_STRING("GEAR_BUTTON_TOOLTIP", IDS_FILE_BROWSER_GEAR_BUTTON_TOOLTIP);
  SET_STRING("SELECTION_MENU_BUTTON_TOOLTIP",
             IDS_FILE_BROWSER_SELECTION_MENU_BUTTON_TOOLTIP);
  SET_STRING("GET_INFO_BUTTON_LABEL", IDS_FILE_BROWSER_GET_INFO_BUTTON_LABEL);
  SET_STRING("HOSTED_OFFLINE_MESSAGE", IDS_FILE_BROWSER_HOSTED_OFFLINE_MESSAGE);
  SET_STRING("HOSTED_OFFLINE_MESSAGE_PLURAL",
             IDS_FILE_BROWSER_HOSTED_OFFLINE_MESSAGE_PLURAL);
  SET_STRING("INSTALL_LINUX_PACKAGE_TITLE",
             IDS_FILE_BROWSER_INSTALL_LINUX_PACKAGE_TITLE);
  SET_STRING("INSTALL_LINUX_PACKAGE_DESCRIPTION",
             IDS_FILE_BROWSER_INSTALL_LINUX_PACKAGE_DESCRIPTION);
  SET_STRING("INSTALL_LINUX_PACKAGE_INSTALL_BUTTON",
             IDS_FILE_BROWSER_INSTALL_LINUX_PACKAGE_INSTALL_BUTTON);
  SET_STRING("INSTALL_LINUX_PACKAGE_INSTALLATION_STARTED",
             IDS_FILE_BROWSER_INSTALL_LINUX_PACKAGE_INSTALLATION_STARTED);
  SET_STRING("INSTALL_LINUX_PACKAGE_ERROR_TITLE",
             IDS_FILE_BROWSER_INSTALL_LINUX_PACKAGE_ERROR_TITLE);
  SET_STRING("INSTALL_LINUX_PACKAGE_ERROR_DESCRIPTION",
             IDS_FILE_BROWSER_INSTALL_LINUX_PACKAGE_ERROR_DESCRIPTION);
  SET_STRING("INSTALL_NEW_EXTENSION_LABEL",
             IDS_FILE_BROWSER_INSTALL_NEW_EXTENSION_LABEL);
  SET_STRING("MANY_DIRECTORIES_SELECTED",
             IDS_FILE_BROWSER_MANY_DIRECTORIES_SELECTED);
  SET_STRING("MANY_ENTRIES_SELECTED", IDS_FILE_BROWSER_MANY_ENTRIES_SELECTED);
  SET_STRING("MANY_FILES_SELECTED", IDS_FILE_BROWSER_MANY_FILES_SELECTED);
  SET_STRING("METADATA_BOX_ALBUM_TITLE",
             IDS_FILE_BROWSER_METADATA_BOX_ALBUM_TITLE);
  SET_STRING("METADATA_BOX_AUDIO_INFO",
             IDS_FILE_BROWSER_METADATA_BOX_AUDIO_INFO);
  SET_STRING("METADATA_BOX_CODEC", IDS_FILE_BROWSER_METADATA_BOX_CODEC);
  SET_STRING("METADATA_BOX_CREATED_BY",
             IDS_FILE_BROWSER_METADATA_BOX_CREATED_BY);
  SET_STRING("METADATA_BOX_CREATION_TIME",
             IDS_FILE_BROWSER_METADATA_BOX_CREATION_TIME);
  SET_STRING("METADATA_BOX_DIMENSION", IDS_FILE_BROWSER_METADATA_BOX_DIMENSION);
  SET_STRING("METADATA_BOX_DURATION", IDS_FILE_BROWSER_METADATA_BOX_DURATION);
  SET_STRING("METADATA_BOX_EXIF_DEVICE_MODEL",
             IDS_FILE_BROWSER_METADATA_BOX_EXIF_DEVICE_MODEL);
  SET_STRING("METADATA_BOX_EXIF_DEVICE_SETTINGS",
             IDS_FILE_BROWSER_METADATA_BOX_EXIF_DEVICE_SETTINGS);
  SET_STRING("METADATA_BOX_EXIF_GEOGRAPHY",
             IDS_FILE_BROWSER_METADATA_BOX_EXIF_GEOGRAPHY);
  SET_STRING("METADATA_BOX_FILE_PATH", IDS_FILE_BROWSER_METADATA_BOX_FILE_PATH);
  SET_STRING("METADATA_BOX_FILE_SIZE", IDS_FILE_BROWSER_METADATA_BOX_FILE_SIZE);
  SET_STRING("METADATA_BOX_FRAME_RATE",
             IDS_FILE_BROWSER_METADATA_BOX_FRAME_RATE);
  SET_STRING("METADATA_BOX_GENERAL_INFO",
             IDS_FILE_BROWSER_METADATA_BOX_GENERAL_INFO);
  SET_STRING("METADATA_BOX_GENRE", IDS_FILE_BROWSER_METADATA_BOX_GENRE);
  SET_STRING("METADATA_BOX_IMAGE_INFO",
             IDS_FILE_BROWSER_METADATA_BOX_IMAGE_INFO);
  SET_STRING("METADATA_BOX_MEDIA_ARTIST",
             IDS_FILE_BROWSER_METADATA_BOX_MEDIA_ARTIST);
  SET_STRING("METADATA_BOX_MEDIA_MIME_TYPE",
             IDS_FILE_BROWSER_METADATA_BOX_MEDIA_MIME_TYPE);
  SET_STRING("METADATA_BOX_MEDIA_TITLE",
             IDS_FILE_BROWSER_METADATA_BOX_MEDIA_TITLE);
  SET_STRING("METADATA_BOX_MODIFICATION_TIME",
             IDS_FILE_BROWSER_METADATA_BOX_MODIFICATION_TIME);
  SET_STRING("METADATA_BOX_MODIFIED_BY",
             IDS_FILE_BROWSER_METADATA_BOX_MODIFIED_BY);
  SET_STRING("METADATA_BOX_PAGE_COUNT",
             IDS_FILE_BROWSER_METADATA_BOX_PAGE_COUNT);
  SET_STRING("METADATA_BOX_SOURCE", IDS_FILE_BROWSER_METADATA_BOX_SOURCE);
  SET_STRING("METADATA_BOX_TRACK", IDS_FILE_BROWSER_METADATA_BOX_TRACK);
  SET_STRING("METADATA_BOX_VIDEO_INFO",
             IDS_FILE_BROWSER_METADATA_BOX_VIDEO_INFO);
  SET_STRING("METADATA_BOX_YEAR_RECORDED",
             IDS_FILE_BROWSER_METADATA_BOX_YEAR_RECORDED);
  SET_STRING("MOUNT_ARCHIVE", IDS_FILE_BROWSER_MOUNT_ARCHIVE);
  SET_STRING("MOVE_FILESYSTEM_ERROR", IDS_FILE_BROWSER_MOVE_FILESYSTEM_ERROR);
  SET_STRING("MOVE_FILE_NAME", IDS_FILE_BROWSER_MOVE_FILE_NAME);
  SET_STRING("MOVE_ITEMS_REMAINING", IDS_FILE_BROWSER_MOVE_ITEMS_REMAINING);
  SET_STRING("MOVE_PROGRESS_SUMMARY", IDS_FILE_BROWSER_MOVE_PROGRESS_SUMMARY);
  SET_STRING("MOVE_SOURCE_NOT_FOUND_ERROR",
             IDS_FILE_BROWSER_MOVE_SOURCE_NOT_FOUND_ERROR);
  SET_STRING("MOVE_TARGET_EXISTS_ERROR",
             IDS_FILE_BROWSER_MOVE_TARGET_EXISTS_ERROR);
  SET_STRING("MOVE_UNEXPECTED_ERROR", IDS_FILE_BROWSER_MOVE_UNEXPECTED_ERROR);
  SET_STRING("MULTIPART_DEVICE_UNSUPPORTED_DEFAULT_MESSAGE",
             IDS_MULTIPART_DEVICE_UNSUPPORTED_DEFAULT_MESSAGE);
  SET_STRING("MULTIPART_DEVICE_UNSUPPORTED_MESSAGE",
             IDS_MULTIPART_DEVICE_UNSUPPORTED_MESSAGE);
  SET_STRING("MULTI_PROFILE_SHARE_DIALOG_MESSAGE",
             IDS_FILE_BROWSER_MULTI_PROFILE_SHARE_DIALOG_MESSAGE);
  SET_STRING("MULTI_PROFILE_SHARE_DIALOG_MESSAGE_PLURAL",
             IDS_FILE_BROWSER_MULTI_PROFILE_SHARE_DIALOG_MESSAGE_PLURAL);
  SET_STRING("MULTI_PROFILE_SHARE_DIALOG_TITLE",
             IDS_FILE_BROWSER_MULTI_PROFILE_SHARE_DIALOG_TITLE);
  SET_STRING("MULTI_PROFILE_SHARE_DIALOG_TITLE_PLURAL",
             IDS_FILE_BROWSER_MULTI_PROFILE_SHARE_DIALOG_TITLE_PLURAL);
  SET_STRING("NAME_COLUMN_LABEL", IDS_FILE_BROWSER_NAME_COLUMN_LABEL);
  SET_STRING("EMPTY_FOLDER", IDS_FILE_BROWSER_EMPTY_FOLDER);
  SET_STRING("NEW_FOLDER_BUTTON_LABEL",
             IDS_FILE_BROWSER_NEW_FOLDER_BUTTON_LABEL);
  SET_STRING("NEW_WINDOW_BUTTON_LABEL",
             IDS_FILE_BROWSER_NEW_WINDOW_BUTTON_LABEL);
  SET_STRING("NO_TASK_FOR_CRX", IDS_FILE_BROWSER_NO_TASK_FOR_CRX);
  SET_STRING("NO_TASK_FOR_CRX_TITLE", IDS_FILE_BROWSER_NO_TASK_FOR_CRX_TITLE);
  SET_STRING("NO_TASK_FOR_DMG", IDS_FILE_BROWSER_NO_TASK_FOR_DMG);
  SET_STRING("NO_TASK_FOR_EXECUTABLE", IDS_FILE_BROWSER_NO_TASK_FOR_EXECUTABLE);
  SET_STRING("NO_TASK_FOR_FILE", IDS_FILE_BROWSER_NO_TASK_FOR_FILE);
  SET_STRING("OFFLINE_COLUMN_LABEL", IDS_FILE_BROWSER_OFFLINE_COLUMN_LABEL);
  SET_STRING("OFFLINE_HEADER", IDS_FILE_BROWSER_OFFLINE_HEADER);
  SET_STRING("OFFLINE_MESSAGE", IDS_FILE_BROWSER_OFFLINE_MESSAGE);
  SET_STRING("OFFLINE_MESSAGE_PLURAL", IDS_FILE_BROWSER_OFFLINE_MESSAGE_PLURAL);
  SET_STRING("OK_LABEL", IDS_FILE_BROWSER_OK_LABEL);
  SET_STRING("ONE_DIRECTORY_SELECTED", IDS_FILE_BROWSER_ONE_DIRECTORY_SELECTED);
  SET_STRING("ONE_FILE_SELECTED", IDS_FILE_BROWSER_ONE_FILE_SELECTED);
  SET_STRING("OPEN_IN_OTHER_DESKTOP_MESSAGE",
             IDS_FILE_BROWSER_OPEN_IN_OTHER_DESKTOP_MESSAGE);
  SET_STRING("OPEN_IN_OTHER_DESKTOP_MESSAGE_PLURAL",
             IDS_FILE_BROWSER_OPEN_IN_OTHER_DESKTOP_MESSAGE_PLURAL);
  SET_STRING("OPEN_LABEL", IDS_FILE_BROWSER_OPEN_LABEL);
  SET_STRING("OPEN_WITH_BUTTON_LABEL", IDS_FILE_BROWSER_OPEN_WITH_BUTTON_LABEL);
  SET_STRING("OPENING_LINUX_FILES",
             IDS_FILE_BROWSER_DROP_TARGET_OPENING_LINUX_FILES);
  SET_STRING("MORE_ACTIONS_BUTTON_LABEL",
             IDS_FILE_BROWSER_MORE_ACTIONS_BUTTON_LABEL);
  SET_STRING("OPEN_WITH_VERB_BUTTON_LABEL",
             IDS_FILE_BROWSER_OPEN_WITH_VERB_BUTTON_LABEL);
  SET_STRING("ADD_TO_VERB_BUTTON_LABEL",
             IDS_FILE_BROWSER_ADD_TO_VERB_BUTTON_LABEL);
  SET_STRING("PACK_WITH_VERB_BUTTON_LABEL",
             IDS_FILE_BROWSER_PACK_WITH_VERB_BUTTON_LABEL);
  SET_STRING("SHARE_WITH_VERB_BUTTON_LABEL",
             IDS_FILE_BROWSER_SHARE_WITH_VERB_BUTTON_LABEL);
  SET_STRING("PASTE_BUTTON_LABEL", IDS_FILE_BROWSER_PASTE_BUTTON_LABEL);
  SET_STRING("PASTE_INTO_FOLDER_BUTTON_LABEL",
             IDS_FILE_BROWSER_PASTE_INTO_FOLDER_BUTTON_LABEL);
  SET_STRING("PREPARING_LABEL", IDS_FILE_BROWSER_PREPARING_LABEL);
  SET_STRING("QUICK_VIEW_CLOSE_BUTTON_LABEL",
             IDS_FILE_BROWSER_QUICK_VIEW_CLOSE_BUTTON_LABEL);
  SET_STRING("QUICK_VIEW_NO_PLAYBACK_AVAILABLE",
             IDS_FILE_BROWSER_QUICK_VIEW_NO_PLAYBACK_AVAILABLE);
  SET_STRING("QUICK_VIEW_NO_PREVIEW_AVAILABLE",
             IDS_FILE_BROWSER_QUICK_VIEW_NO_PREVIEW_AVAILABLE);
  SET_STRING("QUICK_VIEW_OPEN_IN_NEW_BUTTON_LABEL",
             IDS_FILE_BROWSER_QUICK_VIEW_OPEN_IN_NEW_BUTTON_LABEL);
  SET_STRING("QUICK_VIEW_TOGGLE_METADATA_BOX_BUTTON_LABEL",
             IDS_FILE_BROWSER_QUICK_VIEW_TOGGLE_METADATA_BOX_BUTTON_LABEL);
  SET_STRING("REFRESH_BUTTON_LABEL", IDS_FILE_BROWSER_REFRESH_BUTTON_LABEL);
  SET_STRING("REMOVABLE_DEVICE_DETECTION_TITLE",
             IDS_REMOVABLE_DEVICE_DETECTION_TITLE);
  SET_STRING("REMOVABLE_DEVICE_IMPORT_BUTTON_LABEL",
             IDS_REMOVABLE_DEVICE_IMPORT_BUTTON_LABEL);
  SET_STRING("REMOVABLE_DEVICE_IMPORT_MESSAGE",
             IDS_REMOVABLE_DEVICE_IMPORT_MESSAGE);
  SET_STRING("REMOVABLE_DEVICE_NAVIGATION_BUTTON_LABEL",
             IDS_REMOVABLE_DEVICE_NAVIGATION_BUTTON_LABEL);
  SET_STRING("REMOVABLE_DEVICE_NAVIGATION_MESSAGE",
             IDS_REMOVABLE_DEVICE_NAVIGATION_MESSAGE);
  SET_STRING("REMOVABLE_DEVICE_NAVIGATION_MESSAGE_READONLY_POLICY",
             IDS_REMOVABLE_DEVICE_NAVIGATION_MESSAGE_READONLY_POLICY);
  SET_STRING("REMOVE_FOLDER_SHORTCUT_BUTTON_LABEL",
             IDS_FILE_BROWSER_REMOVE_FOLDER_SHORTCUT_BUTTON_LABEL);
  SET_STRING("RENAME_BUTTON_LABEL", IDS_FILE_BROWSER_RENAME_BUTTON_LABEL);
  SET_STRING("SAVE_LABEL", IDS_FILE_BROWSER_SAVE_LABEL);
  SET_STRING("SEARCH_DRIVE_HTML", IDS_FILE_BROWSER_SEARCH_DRIVE_HTML);
  SET_STRING("SEARCH_NO_MATCHING_FILES_HTML",
             IDS_FILE_BROWSER_SEARCH_NO_MATCHING_FILES_HTML);
  SET_STRING("SEARCH_TEXT_LABEL", IDS_FILE_BROWSER_SEARCH_TEXT_LABEL);
  SET_STRING("SELECT_ALL_COMMAND_LABEL",
             IDS_FILE_BROWSER_SELECT_ALL_COMMAND_LABEL);
  SET_STRING("TASKS_BUTTON_LABEL", IDS_FILE_BROWSER_TASKS_BUTTON_LABEL);
  SET_STRING("TOGGLE_HIDDEN_FILES_COMMAND_LABEL",
             IDS_FILE_BROWSER_TOGGLE_HIDDEN_FILES_COMMAND_LABEL);
  SET_STRING("SHARE_BUTTON_LABEL", IDS_FILE_BROWSER_SHARE_BUTTON_LABEL);
  SET_STRING("MANAGE_IN_DRIVE_BUTTON_LABEL",
             IDS_FILE_BROWSER_MANAGE_IN_DRIVE_BUTTON_LABEL);
  SET_STRING("SHARE_WITH_LINUX_BUTTON_LABEL",
             IDS_FILE_BROWSER_SHARE_WITH_LINUX_BUTTON_LABEL);
  SET_STRING("MANAGE_LINUX_SHARING_BUTTON_LABEL",
             IDS_FILE_BROWSER_MANAGE_LINUX_SHARING_BUTTON_LABEL);
  SET_STRING("CHANGE_TO_LISTVIEW_BUTTON_LABEL",
             IDS_FILE_BROWSER_CHANGE_TO_LISTVIEW_BUTTON_LABEL);
  SET_STRING("CHANGE_TO_THUMBNAILVIEW_BUTTON_LABEL",
             IDS_FILE_BROWSER_CHANGE_TO_THUMBNAILVIEW_BUTTON_LABEL);
  SET_STRING("CANCEL_SELECTION_BUTTON_LABEL",
             IDS_FILE_BROWSER_CANCEL_SELECTION_BUTTON_LABEL);
  SET_STRING("SET_WALLPAPER_BUTTON_LABEL",
             IDS_FILE_BROWSER_SET_WALLPAPER_BUTTON_LABEL);
  SET_STRING("SHARE_ERROR", IDS_FILE_BROWSER_SHARE_ERROR);

  SET_STRING("SIZE_BYTES", IDS_FILE_BROWSER_SIZE_BYTES);
  SET_STRING("SIZE_COLUMN_LABEL", IDS_FILE_BROWSER_SIZE_COLUMN_LABEL);
  SET_STRING("SIZE_GB", IDS_FILE_BROWSER_SIZE_GB);
  SET_STRING("SIZE_KB", IDS_FILE_BROWSER_SIZE_KB);
  SET_STRING("SIZE_MB", IDS_FILE_BROWSER_SIZE_MB);
  SET_STRING("SIZE_PB", IDS_FILE_BROWSER_SIZE_PB);
  SET_STRING("SIZE_TB", IDS_FILE_BROWSER_SIZE_TB);
  SET_STRING("SPACE_AVAILABLE", IDS_FILE_BROWSER_SPACE_AVAILABLE);
  SET_STRING("STATUS_COLUMN_LABEL", IDS_FILE_BROWSER_STATUS_COLUMN_LABEL);
  SET_STRING("TOTAL_FILE_SIZE", IDS_FILE_BROWSER_TOTAL_FILE_SIZE_LABEL);
  SET_STRING("TOTAL_FILE_COUNT", IDS_FILE_BROWSER_TOTAL_FILE_COUNT_LABEL);
  SET_STRING("IMAGE_RESOLUTION_COLUMN_LABEL",
             IDS_FILE_BROWSER_IMAGE_RESOLUTION_COLUMN_LABEL);
  SET_STRING("ANDROID_FILES_ROOT_LABEL",
             IDS_FILE_BROWSER_ANDROID_FILES_ROOT_LABEL);
  SET_STRING("SHOW_ALL_ANDROID_FOLDERS_OPTION",
             IDS_FILE_BROWSER_SHOW_ALL_ANDROID_FOLDERS_OPTION);
  SET_STRING("LINUX_FILES_ROOT_LABEL", IDS_FILE_BROWSER_LINUX_FILES_ROOT_LABEL);
  SET_STRING("MY_FILES_ROOT_LABEL", IDS_FILE_BROWSER_MY_FILES_ROOT_LABEL);
  SET_STRING("MEDIA_ARTIST_COLUMN_LABEL",
             IDS_FILE_BROWSER_MEDIA_ARTIST_COLUMN_LABEL);
  SET_STRING("MEDIA_TITLE_COLUMN_LABEL",
             IDS_FILE_BROWSER_MEDIA_TITLE_COLUMN_LABEL);
  SET_STRING("RECENT_ROOT_LABEL", IDS_FILE_BROWSER_RECENT_ROOT_LABEL);
  SET_STRING("SHARE_BEFORE_OPEN_CROSTINI_MULTIPLE",
             IDS_FILE_BROWSER_SHARE_BEFORE_OPEN_CROSTINI_MULTIPLE);
  SET_STRING("SHARE_BEFORE_OPEN_CROSTINI_SINGLE",
             IDS_FILE_BROWSER_SHARE_BEFORE_OPEN_CROSTINI_SINGLE);
  SET_STRING("SHARE_BEFORE_OPEN_CROSTINI_TITLE",
             IDS_FILE_BROWSER_SHARE_BEFORE_OPEN_CROSTINI_TITLE);
  SET_STRING("SUGGEST_DIALOG_INSTALLATION_FAILED",
             IDS_FILE_BROWSER_SUGGEST_DIALOG_INSTALLATION_FAILED);
  SET_STRING("SUGGEST_DIALOG_LINK_TO_WEBSTORE",
             IDS_FILE_BROWSER_SUGGEST_DIALOG_LINK_TO_WEBSTORE);
  SET_STRING("SUGGEST_DIALOG_TITLE", IDS_FILE_BROWSER_SUGGEST_DIALOG_TITLE);
  SET_STRING("SUGGEST_DIALOG_FOR_PROVIDERS_TITLE",
             IDS_FILE_BROWSER_SUGGEST_DIALOG_FOR_PROVIDERS_TITLE);
  SET_STRING("SUGGEST_DIALOG_LOADING_SPINNER_ALT",
             IDS_WEBSTORE_WIDGET_LOADING_SPINNER_ALT);
  SET_STRING("SUGGEST_DIALOG_INSTALLING_SPINNER_ALT",
             IDS_WEBSTORE_WIDGET_INSTALLING_SPINNER_ALT);
  SET_STRING("TASK_INSTALL_LINUX_PACKAGE",
             IDS_FILE_BROWSER_TASK_INSTALL_LINUX_PACKAGE);
  SET_STRING("TASK_LISTEN", IDS_FILE_BROWSER_TASK_LISTEN);
  SET_STRING("TASK_OPEN", IDS_FILE_BROWSER_TASK_OPEN);
  SET_STRING("TASK_OPEN_GDOC", IDS_FILE_BROWSER_TASK_OPEN_GDOC);
  SET_STRING("TASK_OPEN_GSHEET", IDS_FILE_BROWSER_TASK_OPEN_GSHEET);
  SET_STRING("TASK_OPEN_GSLIDES", IDS_FILE_BROWSER_TASK_OPEN_GSLIDES);
  SET_STRING("TASK_VIEW", IDS_FILE_BROWSER_TASK_VIEW);
  SET_STRING("THUMBNAIL_VIEW_TOOLTIP", IDS_FILE_BROWSER_THUMBNAIL_VIEW_TOOLTIP);
  SET_STRING("TIME_TODAY", IDS_FILE_BROWSER_TIME_TODAY);
  SET_STRING("TIME_YESTERDAY", IDS_FILE_BROWSER_TIME_YESTERDAY);
  SET_STRING("TRANSFER_PROGRESS_SUMMARY",
             IDS_FILE_BROWSER_TRANSFER_PROGRESS_SUMMARY);
  SET_STRING("TYPE_COLUMN_LABEL", IDS_FILE_BROWSER_TYPE_COLUMN_LABEL);
  SET_STRING("UNABLE_TO_OPEN_CROSTINI",
             IDS_FILE_BROWSER_UNABLE_TO_OPEN_CROSTINI);
  SET_STRING("UNABLE_TO_OPEN_CROSTINI_TITLE",
             IDS_FILE_BROWSER_UNABLE_TO_OPEN_CROSTINI_TITLE);
  SET_STRING("UNKNOWN_FILESYSTEM_WARNING",
             IDS_FILE_BROWSER_UNKNOWN_FILESYSTEM_WARNING);
  SET_STRING("UNMOUNT_DEVICE_BUTTON_LABEL",
             IDS_FILE_BROWSER_UNMOUNT_DEVICE_BUTTON_LABEL);
  SET_STRING("UNMOUNT_FAILED", IDS_FILE_BROWSER_UNMOUNT_FAILED);
  SET_STRING("UNMOUNT_PROVIDED_FAILED",
             IDS_FILE_BROWSER_UNMOUNT_PROVIDED_FAILED);
  SET_STRING("UNSUPPORTED_FILESYSTEM_WARNING",
             IDS_FILE_BROWSER_UNSUPPORTED_FILESYSTEM_WARNING);
  SET_STRING("UPLOAD_LABEL", IDS_FILE_BROWSER_UPLOAD_LABEL);
  SET_STRING("WAITING_FOR_SPACE_INFO", IDS_FILE_BROWSER_WAITING_FOR_SPACE_INFO);
  SET_STRING("ZIP_FILESYSTEM_ERROR", IDS_FILE_BROWSER_ZIP_FILESYSTEM_ERROR);
  SET_STRING("ZIP_FILE_NAME", IDS_FILE_BROWSER_ZIP_FILE_NAME);
  SET_STRING("ZIP_ITEMS_REMAINING", IDS_FILE_BROWSER_ZIP_ITEMS_REMAINING);
  SET_STRING("ZIP_PROGRESS_SUMMARY", IDS_FILE_BROWSER_ZIP_PROGRESS_SUMMARY);
  SET_STRING("ZIP_SELECTION_BUTTON_LABEL",
             IDS_FILE_BROWSER_ZIP_SELECTION_BUTTON_LABEL);
  SET_STRING("ZIP_TARGET_EXISTS_ERROR",
             IDS_FILE_BROWSER_ZIP_TARGET_EXISTS_ERROR);
  SET_STRING("ZIP_UNEXPECTED_ERROR", IDS_FILE_BROWSER_ZIP_UNEXPECTED_ERROR);
  SET_STRING("SEE_MENU_FOR_ACTIONS", IDS_FILE_BROWSER_SEE_MENU_FOR_ACTIONS);
#undef SET_STRING

  dict->SetBoolean("PDF_VIEW_ENABLED",
                   file_manager::util::ShouldBeOpenedWithPlugin(
                       Profile::FromBrowserContext(browser_context()),
                       FILE_PATH_LITERAL(".pdf")));
  dict->SetBoolean("SWF_VIEW_ENABLED",
                   file_manager::util::ShouldBeOpenedWithPlugin(
                       Profile::FromBrowserContext(browser_context()),
                       FILE_PATH_LITERAL(".swf")));
  // TODO(crbug.com/868747): Find a better solution for demo mode.
  dict->SetBoolean("HIDE_SPACE_INFO",
                   chromeos::DemoSession::IsDeviceInDemoMode());
  dict->SetString("CHROMEOS_RELEASE_BOARD",
                  base::SysInfo::GetLsbReleaseBoard());
  dict->SetString(
      "DOWNLOADS_LOW_SPACE_WARNING_HELP_URL",
      base::StringPrintf(kHelpURLFormat, kDownloadsLowSpaceWarningHelpNumber));
  dict->SetString("FILES_APP_HELP_URL",
                  base::StringPrintf(kHelpURLFormat, kFilesAppHelpNumber));

  dict->SetString("GOOGLE_DRIVE_BUY_STORAGE_URL", kGoogleDriveBuyStorageUrl);
  dict->SetString(
      "GOOGLE_DRIVE_ERROR_HELP_URL",
      base::StringPrintf(kHelpURLFormat, kGoogleDriveErrorHelpNumber));
  dict->SetString("GOOGLE_DRIVE_HELP_URL", kGoogleDriveHelpUrl);
  dict->SetString("GOOGLE_DRIVE_OVERVIEW_URL", kGoogleDriveOverviewUrl);
  dict->SetString("GOOGLE_DRIVE_REDEEM_URL", kGoogleDriveRedeemUrl);
  dict->SetString("GOOGLE_DRIVE_ROOT_URL", kGoogleDriveRootUrl);
  dict->SetString(
      "NO_TASK_FOR_FILE_URL",
      base::StringPrintf(kHelpURLFormat, kNoActionForFileHelpNumber));
  dict->SetString("UI_LOCALE", extension_l10n_util::CurrentLocaleOrDefault());

  const std::string& app_locale = g_browser_process->GetApplicationLocale();
  webui::SetLoadTimeDataDefaults(app_locale, dict.get());

  return RespondNow(OneArgument(std::move(dict)));
}

}  // namespace extensions
