Index: chrome/browser/guest_view/extension_options/extension_options_apitest.cc |
diff --git a/chrome/browser/guest_view/extension_options/extension_options_apitest.cc b/chrome/browser/guest_view/extension_options/extension_options_apitest.cc |
index af96f02598a0da2fbf0b011631a3e1afb3cbc170..1de892f5a2437e807bcc856aa1b6d2269a12025d 100644 |
--- a/chrome/browser/guest_view/extension_options/extension_options_apitest.cc |
+++ b/chrome/browser/guest_view/extension_options/extension_options_apitest.cc |
@@ -2,7 +2,10 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/files/file_path.h" |
+#include "base/strings/stringprintf.h" |
#include "chrome/browser/extensions/extension_apitest.h" |
+#include "chrome/test/base/ui_test_utils.h" |
#include "extensions/common/feature_switch.h" |
#include "extensions/common/switches.h" |
@@ -12,22 +15,58 @@ using extensions::FeatureSwitch; |
class ExtensionOptionsApiTest : public ExtensionApiTest { |
private: |
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
+ ExtensionApiTest::SetUpCommandLine(command_line); |
+ |
+ enable_options_.reset(new FeatureSwitch::ScopedOverride( |
+ FeatureSwitch::embedded_extension_options(), true)); |
// Need to add a command line flag as well as a FeatureSwitch because the |
// FeatureSwitch is not copied over to the renderer process from the |
// browser process. |
command_line->AppendSwitch( |
extensions::switches::kEnableEmbeddedExtensionOptions); |
- ExtensionApiTest::SetUpCommandLine(command_line); |
} |
+ |
+ scoped_ptr<FeatureSwitch::ScopedOverride> enable_options_; |
}; |
IN_PROC_BROWSER_TEST_F(ExtensionOptionsApiTest, ExtensionCanEmbedOwnOptions) { |
- FeatureSwitch::ScopedOverride enable_options( |
- FeatureSwitch::embedded_extension_options(), true); |
- |
- const Extension* extension = InstallExtension( |
- test_data_dir_.AppendASCII("extension_options").AppendASCII("embed_self"), |
- 1); |
- ASSERT_TRUE(extension); |
+ base::FilePath extension_dir = |
+ test_data_dir_.AppendASCII("extension_options").AppendASCII("embed_self"); |
+ ASSERT_TRUE(InstallExtension(extension_dir, 1)); |
ASSERT_TRUE(RunExtensionSubtest("extension_options/embed_self", "test.html")); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(ExtensionOptionsApiTest, |
+ ShouldNotEmbedOtherExtensionsOptions) { |
+ base::FilePath dir = test_data_dir_.AppendASCII("extension_options") |
+ .AppendASCII("embed_other"); |
+ |
+ const Extension* embedder = InstallExtension(dir.AppendASCII("embedder"), 1); |
+ const Extension* embedded = InstallExtension(dir.AppendASCII("embedded"), 1); |
+ |
+ ASSERT_TRUE(embedder); |
+ ASSERT_TRUE(embedded); |
+ |
+ // Since the extension id of the embedded extension is not always the same, |
+ // store the embedded extension id in the embedder's storage before running |
+ // the tests. |
+ std::string script = base::StringPrintf( |
+ "chrome.storage.local.set({'embeddedId': '%s'}, function() {" |
+ "window.domAutomationController.send('done injecting');});", |
+ embedded->id().c_str()); |
+ |
+ ExecuteScriptInBackgroundPage(embedder->id(), script); |
+ ResultCatcher catcher; |
+ ui_test_utils::NavigateToURL(browser(), |
+ embedder->GetResourceURL("test.html")); |
+ ASSERT_TRUE(catcher.GetNextResult()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(ExtensionOptionsApiTest, |
+ CannotEmbedUsingInvalidExtensionIds) { |
+ ASSERT_TRUE(InstallExtension(test_data_dir_.AppendASCII("extension_options") |
+ .AppendASCII("embed_invalid"), |
+ 1)); |
+ ASSERT_TRUE( |
+ RunExtensionSubtest("extension_options/embed_invalid", "test.html")); |
+} |