Commit 0963159d authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions] Properly localize the "action" key's default title

Bug: 1133360, 893373

Change-Id: I941260885f851faeb6f8978850e3361568d8585a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2439644Reviewed-by: default avatarDavid Bertoni <dbertoni@chromium.org>
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814045}
parent c4dc65d4
......@@ -9,6 +9,8 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_with_install.h"
#include "chrome/common/extensions/extension_test_util.h"
#include "extensions/browser/extension_action.h"
#include "extensions/browser/extension_action_manager.h"
#include "extensions/common/api/extension_action/action_info.h"
#include "extensions/common/api/extension_action/action_info_test_util.h"
#include "extensions/common/features/feature_channel.h"
......@@ -81,6 +83,54 @@ TEST_P(ExtensionActionAPIUnitTest, MultiIcons) {
EXPECT_EQ("icon38.png", icons.Get(38, ExtensionIconSet::MATCH_EXACTLY));
}
// Test that localization in the manifest properly applies to the "action"
// title.
TEST_P(ExtensionActionAPIUnitTest, ActionLocalization) {
InitializeEmptyExtensionService();
TestExtensionDir test_dir;
constexpr char kManifest[] =
R"({
"name": "Some extension",
"version": "3.0",
"manifest_version": 2,
"default_locale": "en",
"%s": { "default_title": "__MSG_default_action_title__" }
})";
test_dir.WriteManifest(
base::StringPrintf(kManifest, GetManifestKeyForActionType(GetParam())));
constexpr char kMessages[] =
R"({
"default_action_title": {
"message": "An Action Title!"
}
})";
{
// TODO(https://crbug.com/1135378): It's a bit clunky to write to nested
// files in a TestExtensionDir. It'd be nice to provide better support for
// this.
base::ScopedAllowBlockingForTesting allow_blocking;
base::FilePath locales = test_dir.UnpackedPath().AppendASCII("_locales");
base::FilePath locales_en = locales.AppendASCII("en");
base::FilePath messages_path = locales_en.AppendASCII("messages.json");
ASSERT_TRUE(base::CreateDirectory(locales));
ASSERT_TRUE(base::CreateDirectory(locales_en));
ASSERT_TRUE(base::WriteFile(messages_path, kMessages));
}
const Extension* extension =
PackAndInstallCRX(test_dir.UnpackedPath(), INSTALL_NEW);
ASSERT_TRUE(extension);
auto* action_manager = ExtensionActionManager::Get(profile());
ExtensionAction* action = action_manager->GetExtensionAction(*extension);
ASSERT_TRUE(action);
EXPECT_EQ("An Action Title!",
action->GetTitle(ExtensionAction::kDefaultTabId));
}
INSTANTIATE_TEST_SUITE_P(All,
ExtensionActionAPIUnitTest,
testing::Values(ActionInfo::TYPE_BROWSER,
......
......@@ -246,6 +246,14 @@ bool LocalizeManifest(const extensions::MessageBundle& messages,
if (!LocalizeManifestValue(key, messages, manifest, error))
return false;
// Initialize action.default_title
// TODO(devlin): These could easily use something like base::StrCat().
key.assign(keys::kAction);
key.append(".");
key.append(keys::kActionDefaultTitle);
if (!LocalizeManifestValue(key, messages, manifest, error))
return false;
// Initialize omnibox.keyword.
if (!LocalizeManifestValue(keys::kOmniboxKeyword, messages, manifest, error))
return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment