Commit 7cf52825 authored by Jit Yao Yap's avatar Jit Yao Yap Committed by Commit Bot

Add login_screen_extension permission for chrome i18n API

Bug: 986266
Change-Id: I08220cacd6c1957e52a36ec8cb2066774d92290d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2047108
Commit-Queue: Jit Yao Yap <jityao@google.com>
Reviewed-by: default avatarIstiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#740635}
parent c4c4104a
// Copyright 2020 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 <string>
#include <utility>
#include "base/values.h"
#include "chrome/browser/chromeos/extensions/login_screen/login_screen_apitest_base.h"
#include "components/policy/proto/chrome_device_policy.pb.h"
#include "components/version_info/version_info.h"
#include "extensions/browser/api/test/test_api.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
constexpr char kI18nGetMessage[] = "I18nGetMessage";
struct I18nTestParams {
std::string locale_name;
std::string expected_message;
};
} // namespace
namespace chromeos {
// A test suite which checks that the login screen extension returns the correct
// message from the i18n API based on the locale. The first param is the
// device's login screen locale and the second param is the expected message.
class LoginScreenI18nApitest
: public LoginScreenApitestBase,
public testing::WithParamInterface<I18nTestParams> {
public:
LoginScreenI18nApitest()
: LoginScreenApitestBase(version_info::Channel::STABLE) {}
LoginScreenI18nApitest(const LoginScreenI18nApitest&) = delete;
LoginScreenI18nApitest& operator=(const LoginScreenI18nApitest&) = delete;
~LoginScreenI18nApitest() override = default;
void SetExpectedMessage(const std::string custom_arg) {
config_.SetKey("customArg", base::Value(custom_arg));
extensions::TestGetConfigFunction::set_test_config_state(&config_);
}
void SetUpInProcessBrowserTestFixture() override {
LoginScreenApitestBase::SetUpInProcessBrowserTestFixture();
device_policy()
->payload()
.mutable_login_screen_locales()
->add_login_screen_locales(GetParam().locale_name);
RefreshDevicePolicy();
}
private:
base::DictionaryValue config_;
};
IN_PROC_BROWSER_TEST_P(LoginScreenI18nApitest, GetMessage) {
SetExpectedMessage(GetParam().expected_message);
SetUpLoginScreenExtensionAndRunTest(kI18nGetMessage);
}
INSTANTIATE_TEST_SUITE_P(
LoginScreenExtension,
LoginScreenI18nApitest,
testing::ValuesIn({I18nTestParams{"en-US", "Hello World!"},
I18nTestParams{"de-DE", "Hallo Welt!"}}));
} // namespace chromeos
......@@ -490,7 +490,8 @@
},
"i18n": {
"channel": "stable",
"extension_types": ["extension", "legacy_packaged_app", "platform_app"],
"extension_types": ["extension", "legacy_packaged_app", "platform_app",
"login_screen_extension"],
"contexts": ["blessed_extension", "unblessed_extension", "content_script",
"lock_screen_extension"],
"disallow_for_service_workers": true
......
......@@ -2178,6 +2178,7 @@ if (!is_android) {
"../browser/chromeos/extensions/login_screen/login/login_apitest.cc",
"../browser/chromeos/extensions/login_screen/login_screen_apitest_base.cc",
"../browser/chromeos/extensions/login_screen/login_screen_apitest_base.h",
"../browser/chromeos/extensions/login_screen/login_screen_i18n_apitest.cc",
"../browser/chromeos/extensions/login_screen/login_screen_ui/login_screen_ui_apitest.cc",
"../browser/chromeos/extensions/login_screen/login_state/login_state_apitest.cc",
"../browser/chromeos/extensions/login_screen/login_state/session_state_changed_event_dispatcher_apitest.cc",
......
......@@ -18,6 +18,7 @@ const sessionNotActiveErrorMessage = 'Session is not active';
const noPermissionToUnlockErrorMessage =
'The extension does not have permission to unlock this session';
const authenticationFailedErrorMessage = 'Authentication failed';
const i18nMessageName = 'message';
const tests = {
/* LoginScreenUi ************************************************************/
......@@ -174,6 +175,14 @@ const tests = {
chrome.test.succeed();
});
},
/* I18n *********************************************************************/
'I18nGetMessage': () => {
chrome.test.getConfig(config => {
const message = chrome.i18n.getMessage(i18nMessageName);
chrome.test.assertEq(config.customArg, message);
chrome.test.succeed();
});
},
};
// |waitForTestName()| waits for the browser test to reply with a test name and
......
{
"name": "Login screen APIs test extension",
"version": "1.23",
"version": "1.24",
"manifest_version": 2,
"description": "Login screen APIs test extension",
"default_locale": "en",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": [
"i18n",
"login",
"loginScreenUi",
"storage",
"login"
"storage"
]
}
......@@ -8,7 +8,7 @@
<app appid='oclffehlkdgibkainkilopaalpdobkan'>
<updatecheck
codebase='http://mock.http/extensions/api_test/login_screen_apis/extension.crx'
version='1.23' />
version='1.24' />
</app>
<app appid='ofcpkomnogjenhfajfjadjmjppbegnad'>
<updatecheck
......
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