Index: chrome/browser/policy/policy_browsertest.cc |
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc |
index b455aacdb744a3900df031421414f102ee9391d9..bbd43e2c9e7c9f561d3e89f9f058dc7a68098d56 100644 |
--- a/chrome/browser/policy/policy_browsertest.cc |
+++ b/chrome/browser/policy/policy_browsertest.cc |
@@ -102,7 +102,8 @@ |
#include "webkit/plugins/npapi/plugin_utils.h" |
#include "webkit/plugins/plugin_constants.h" |
#include "webkit/plugins/webplugininfo.h" |
- |
+#include "chrome/browser/extensions/extension_apitest.h" |
+#include "chrome/browser/extensions/component_loader.h" |
oscarpan
2013/02/06 04:38:45
Either remove or reorder the imports in future, as
|
#if defined(OS_CHROMEOS) |
#include "ash/accelerators/accelerator_controller.h" |
#include "ash/accelerators/accelerator_table.h" |
@@ -297,6 +298,21 @@ bool IsWebGLEnabled(content::WebContents* contents) { |
return result; |
} |
+#if defined(OS_CHROMEOS) |
+// Checks if redeeming cros offers is allowed in the given WebContents. |
+bool CheckAllowRedeemCrosOffers(content::WebContents* contents) { |
+ bool result = false; |
+ EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
+ contents, |
+ "chrome.echoPrivate.allowRedeemOffers(" |
+ " function(allow) {" |
+ " domAutomationController.send(allow);" |
+ " });", |
+ &result)); |
+ return result; |
+} |
+#endif |
+ |
bool IsJavascriptEnabled(content::WebContents* contents) { |
scoped_ptr<base::Value> value = content::ExecuteScriptAndGetValue( |
contents->GetRenderViewHost(), "123"); |
@@ -525,6 +541,20 @@ class PolicyTest : public InProcessBrowserTest { |
return details.ptr(); |
} |
+ const extensions::Extension* LoadExtensionAsComponent( |
+ const FilePath& path) { |
+ ExtensionService* service = extension_service(); |
+ |
+ std::string manifest; |
+ if (!file_util::ReadFileToString( |
+ path.Append(extensions::Extension::kManifestFilename), |
+ &manifest)) |
+ return NULL; |
+ |
+ std::string extension_id = service->component_loader()->Add(manifest, path); |
+ return service->extensions()->GetByID(extension_id); |
+ } |
+ |
oscarpan
2013/02/06 04:38:45
This seems a bit ugly. I'm trying to load my exten
Mattias Nissler (ping if slow)
2013/02/06 10:03:26
That's fine. The alternative would be to add the t
|
void UninstallExtension(const std::string& id, bool expect_success) { |
content::WindowedNotificationObserver observer( |
expect_success ? chrome::NOTIFICATION_EXTENSION_UNINSTALLED |
@@ -1314,6 +1344,41 @@ IN_PROC_BROWSER_TEST_F(PolicyTest, IncognitoEnabled) { |
EXPECT_TRUE(BrowserList::IsOffTheRecordSessionActive()); |
} |
+#if defined(OS_CHROMEOS) |
+IN_PROC_BROWSER_TEST_F(PolicyTest, AllowRedeemChromeOsRegistrationOffers) { |
+ FilePath extension_path(ui_test_utils::GetTestFilePath( |
+ FilePath(kTestExtensionsDir), FilePath("echo_component_extension"))); |
+ LoadExtensionAsComponent(extension_path); |
+ content::WebContents* contents = |
+ browser()->tab_strip_model()->GetActiveWebContents(); |
+ contents->GetController().LoadURL( |
+ GURL("chrome-extension://lbgjohhgghbkcgejgklgcmfijhbheflf/main.html"), |
+ content::Referrer(), |
oscarpan
2013/02/06 04:38:45
Although it seems it can access chrome.echoPrivate
Mattias Nissler (ping if slow)
2013/02/06 10:03:26
Seems like you want to attach a debugger and check
|
+ content::PAGE_TRANSITION_AUTO_TOPLEVEL, |
+ std::string()); |
+ content::WaitForLoadStop(contents); |
+ EXPECT_TRUE(CheckAllowRedeemCrosOffers(contents)); |
+ PolicyMap policies; |
+ |
+ // Allow offer redemption and verify the flag value through js. |
+ policies.Set(key::kDeviceAllowRedeemChromeOsRegistrationOffers, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_MACHINE, |
+ base::Value::CreateBooleanValue(false)); |
+ UpdateProviderPolicy(policies); |
+ EXPECT_FALSE(CheckAllowRedeemCrosOffers(contents)); |
+ |
+ // Disallow offer redemption and verify the flag value through js. |
+ policies.Set(key::kDeviceAllowRedeemChromeOsRegistrationOffers, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_MACHINE, |
+ base::Value::CreateBooleanValue(true)); |
+ |
+ UpdateProviderPolicy(policies); |
+ EXPECT_TRUE(CheckAllowRedeemCrosOffers(contents)); |
+} |
+#endif |
+ |
IN_PROC_BROWSER_TEST_F(PolicyTest, Javascript) { |
// Verifies that Javascript can be disabled. |
content::WebContents* contents = |