summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-04 16:19:10 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-04 16:19:10 +0000
commite0801156e169e1e91a73a6d3aa5dc7b22dae1cb3 (patch)
tree5c674776366f1de7cd404df5cbe6064bd192eab7
parent159f06c0c7d7c88c079c2247860018756efb0725 (diff)
downloadchromium_src-e0801156e169e1e91a73a6d3aa5dc7b22dae1cb3.zip
chromium_src-e0801156e169e1e91a73a6d3aa5dc7b22dae1cb3.tar.gz
chromium_src-e0801156e169e1e91a73a6d3aa5dc7b22dae1cb3.tar.bz2
Fix extension event name for managedModePrivate.onChange (whoops).
Add an API test for the event. BUG=120635 TEST=ExtensionApiTest.ManagedModeOnChange Review URL: https://chromiumcodereview.appspot.com/10447141 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140298 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/extension_apitest.h3
-rw-r--r--chrome/browser/extensions/extension_managed_mode_api.cc2
-rw-r--r--chrome/browser/extensions/extension_managed_mode_apitest.cc35
-rw-r--r--chrome/browser/managed_mode.h1
-rw-r--r--chrome/browser_tests.isolate6
-rw-r--r--chrome/test/data/extensions/api_test/managed_mode/get_enter/manifest.json (renamed from chrome/test/data/extensions/api_test/managedMode/manifest.json)0
-rw-r--r--chrome/test/data/extensions/api_test/managed_mode/get_enter/test.js (renamed from chrome/test/data/extensions/api_test/managedMode/test.js)0
-rw-r--r--chrome/test/data/extensions/api_test/managed_mode/on_change/manifest.json8
-rw-r--r--chrome/test/data/extensions/api_test/managed_mode/on_change/test.html7
-rw-r--r--chrome/test/data/extensions/api_test/managed_mode/on_change/test.js30
10 files changed, 85 insertions, 7 deletions
diff --git a/chrome/browser/extensions/extension_apitest.h b/chrome/browser/extensions/extension_apitest.h
index 9e34373..2be4fd5 100644
--- a/chrome/browser/extensions/extension_apitest.h
+++ b/chrome/browser/extensions/extension_apitest.h
@@ -126,7 +126,8 @@ class ExtensionApiTest : public ExtensionBrowserTest {
bool RunExtensionSubtest(const char* extension_name,
const std::string& page_url);
- // Same as RunExtensionSubtest, except run with the specific |flags|.
+ // Same as RunExtensionSubtest, except run with the specific |flags|
+ // (as defined in the Flags enum).
bool RunExtensionSubtest(const char* extension_name,
const std::string& page_url,
int flags);
diff --git a/chrome/browser/extensions/extension_managed_mode_api.cc b/chrome/browser/extensions/extension_managed_mode_api.cc
index 44ac940..0e747d5 100644
--- a/chrome/browser/extensions/extension_managed_mode_api.cc
+++ b/chrome/browser/extensions/extension_managed_mode_api.cc
@@ -23,7 +23,7 @@
namespace {
// Event that is fired when we enter or leave managed mode.
-const char kChangeEventName[] = "experimental.managedMode.onChange";
+const char kChangeEventName[] = "managedModePrivate.onChange";
// Key to report whether the attempt to enter managed mode succeeded.
const char kEnterSuccessKey[] = "success";
diff --git a/chrome/browser/extensions/extension_managed_mode_apitest.cc b/chrome/browser/extensions/extension_managed_mode_apitest.cc
index 3085a4f..d8d1c07 100644
--- a/chrome/browser/extensions/extension_managed_mode_apitest.cc
+++ b/chrome/browser/extensions/extension_managed_mode_apitest.cc
@@ -5,15 +5,42 @@
#include "chrome/browser/managed_mode.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/extensions/extension.h"
+#include "chrome/test/base/ui_test_utils.h"
// Tests enabling and querying managed mode.
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ManagedModeGetAndEnable) {
- CommandLine::ForCurrentProcess()->AppendSwitch(
- switches::kEnableExperimentalExtensionApis);
-
ASSERT_FALSE(ManagedMode::IsInManagedMode());
- ASSERT_TRUE(RunComponentExtensionTest("managedMode")) << message_;
+ ASSERT_TRUE(RunComponentExtensionTest("managed_mode/get_enter")) << message_;
EXPECT_TRUE(ManagedMode::IsInManagedMode());
}
+
+// Tests the event when entering or leaving managed mode.
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ManagedModeOnChange) {
+ ASSERT_FALSE(ManagedMode::IsInManagedMode());
+
+ // We can't just call RunComponentExtension() like above, because we need to
+ // fire the event while the page is waiting.
+ FilePath extension_path =
+ test_data_dir_.AppendASCII("managed_mode/on_change");
+ const extensions::Extension* extension =
+ LoadExtensionAsComponent(extension_path);
+ ASSERT_TRUE(extension) << "Failed to load extension.";
+
+ ResultCatcher catcher;
+ // Tell the test what values for the |onChange| event to expect.
+ std::string page_url = "test.html?expect=true,false";
+ ui_test_utils::NavigateToURL(browser(),
+ extension->GetResourceURL(page_url));
+
+ // Fire the extension event when entering managed mode. We directly call
+ // SetInManagedMode() to bypass any confirmation dialogs etc.
+ ManagedMode::GetInstance()->SetInManagedMode(true);
+
+ // Fire the extension event when leaving managed mode.
+ ManagedMode::GetInstance()->SetInManagedMode(false);
+
+ ASSERT_TRUE(catcher.GetNextResult()) << catcher.message();
+}
diff --git a/chrome/browser/managed_mode.h b/chrome/browser/managed_mode.h
index e76936b..d3779ca 100644
--- a/chrome/browser/managed_mode.h
+++ b/chrome/browser/managed_mode.h
@@ -55,6 +55,7 @@ class ManagedMode : public BrowserList::Observer,
private:
friend struct DefaultSingletonTraits<ManagedMode>;
friend class Singleton<ManagedMode>;
+ FRIEND_TEST_ALL_PREFIXES(ExtensionApiTest, ManagedModeOnChange);
static ManagedMode* GetInstance();
diff --git a/chrome/browser_tests.isolate b/chrome/browser_tests.isolate
index b58d52a..e89b7ec 100644
--- a/chrome/browser_tests.isolate
+++ b/chrome/browser_tests.isolate
@@ -436,7 +436,11 @@
'test/data/extensions/api_test/i18n/manifest.json',
'test/data/extensions/api_test/idle/manifest.json',
'test/data/extensions/api_test/input/manifest.json',
- 'test/data/extensions/api_test/managedMode/manifest.json',
+ 'test/data/extensions/api_test/managed_mode/get_enter/manifest.json',
+ 'test/data/extensions/api_test/managed_mode/get_enter/test.js',
+ 'test/data/extensions/api_test/managed_mode/on_change/manifest.json',
+ 'test/data/extensions/api_test/managed_mode/on_change/test.html',
+ 'test/data/extensions/api_test/managed_mode/on_change/test.js',
'test/data/extensions/api_test/messaging/event_url/manifest.json',
'test/data/extensions/api_test/metrics/manifest.json',
'test/data/extensions/api_test/mutation_observers/manifest.json',
diff --git a/chrome/test/data/extensions/api_test/managedMode/manifest.json b/chrome/test/data/extensions/api_test/managed_mode/get_enter/manifest.json
index d5a8210..d5a8210 100644
--- a/chrome/test/data/extensions/api_test/managedMode/manifest.json
+++ b/chrome/test/data/extensions/api_test/managed_mode/get_enter/manifest.json
diff --git a/chrome/test/data/extensions/api_test/managedMode/test.js b/chrome/test/data/extensions/api_test/managed_mode/get_enter/test.js
index 5f3ef1e..5f3ef1e 100644
--- a/chrome/test/data/extensions/api_test/managedMode/test.js
+++ b/chrome/test/data/extensions/api_test/managed_mode/get_enter/test.js
diff --git a/chrome/test/data/extensions/api_test/managed_mode/on_change/manifest.json b/chrome/test/data/extensions/api_test/managed_mode/on_change/manifest.json
new file mode 100644
index 0000000..d263bf1
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/managed_mode/on_change/manifest.json
@@ -0,0 +1,8 @@
+{
+ "name" : "Managed Mode API Test Extension",
+ "version" : "0.1",
+ "manifest_version": 2,
+ "key": "MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDJ5+2VmV02HP3jkMhxbp2yuyzf4K4JsffgCf8zsPljLVV2A+JXGj0TbvzvDP3RDCKC5qPMprQkoYlKVW2b6H0kQ8dNmZsjxMqEz/ZDx4Z6/VvbMaz8pP+dENs5Io5XlG5Op2nsJF+y+LqbX6qbff9D/s4fTWyqKillpJN+48qs0wIBIw==",
+ "description" : "Managed Mode API Test Extension",
+ "permissions": [ "managedModePrivate" ]
+}
diff --git a/chrome/test/data/extensions/api_test/managed_mode/on_change/test.html b/chrome/test/data/extensions/api_test/managed_mode/on_change/test.html
new file mode 100644
index 0000000..0c82e87
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/managed_mode/on_change/test.html
@@ -0,0 +1,7 @@
+<html>
+<head>
+<script src="test.js"></script>
+</head>
+<body>
+</body>
+</html> \ No newline at end of file
diff --git a/chrome/test/data/extensions/api_test/managed_mode/on_change/test.js b/chrome/test/data/extensions/api_test/managed_mode/on_change/test.js
new file mode 100644
index 0000000..6931dbb
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/managed_mode/on_change/test.js
@@ -0,0 +1,30 @@
+// Copyright (c) 2012 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.
+
+// Managed Mode API test
+// Run with browser_tests --gtest_filter=ExtensionApiTest.ManagedModeOnChange
+
+// Listen until |event| has fired with all of the values in |expected| in that
+// order.
+function listenForSequence(event, expected) {
+ var done = chrome.test.listenForever(event, function(value) {
+ chrome.test.assertEq(expected.shift(), value);
+ if (expected.length == 0)
+ done();
+ });
+}
+
+var managedMode = chrome.managedModePrivate;
+
+chrome.test.runTests([
+ function testOnChange() {
+ var match = document.location.search.match(/^\?expect=(.*)$/);
+ chrome.test.assertTrue(match !== null);
+ var expected = match[1].split(/,/).map(function(value) {
+ return {'value': (value === 'true')};
+ });
+
+ listenForSequence(managedMode.onChange, expected);
+ }
+]);