Index: apps/load_and_launch_browsertest.cc |
diff --git a/apps/load_and_launch_browsertest.cc b/apps/load_and_launch_browsertest.cc |
index fc95daec61bc75a6fdd0be387e65942f9d00ab93..0043ce5e8ae6c7c58c234e560e6037ca202a608e 100644 |
--- a/apps/load_and_launch_browsertest.cc |
+++ b/apps/load_and_launch_browsertest.cc |
@@ -11,10 +11,13 @@ |
#include "base/test/test_timeouts.h" |
#include "chrome/browser/apps/app_browsertest_util.h" |
#include "chrome/browser/extensions/extension_browsertest.h" |
+#include "chrome/browser/extensions/extension_error_reporter.h" |
#include "chrome/browser/profiles/profile_manager.h" |
+#include "chrome/browser/ui/simple_message_box_internal.h" |
#include "chrome/common/chrome_switches.h" |
#include "content/public/common/content_switches.h" |
#include "content/public/test/test_launcher.h" |
+#include "extensions/browser/extension_registry.h" |
#include "extensions/test/extension_test_message_listener.h" |
using extensions::PlatformAppBrowserTest; |
@@ -112,7 +115,8 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, |
namespace { |
-// TestFixture that appends --load-and-launch-app before calling BrowserMain. |
+// TestFixture that appends --load-and-launch-app with an app before calling |
+// BrowserMain. |
class PlatformAppLoadAndLaunchBrowserTest : public PlatformAppBrowserTest { |
protected: |
PlatformAppLoadAndLaunchBrowserTest() {} |
@@ -141,6 +145,36 @@ class PlatformAppLoadAndLaunchBrowserTest : public PlatformAppBrowserTest { |
DISALLOW_COPY_AND_ASSIGN(PlatformAppLoadAndLaunchBrowserTest); |
}; |
+// TestFixture that appends --load-and-launch-app with an extension before |
+// calling BrowserMain. |
+class LoadAndLaunchExtensionBrowserTest : public PlatformAppBrowserTest { |
+ protected: |
+ LoadAndLaunchExtensionBrowserTest() {} |
+ |
+ void SetUpCommandLine(base::CommandLine* command_line) override { |
+ PlatformAppBrowserTest::SetUpCommandLine(command_line); |
+ app_path_ = test_data_dir_.AppendASCII("good") |
+ .AppendASCII("Extensions") |
+ .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") |
+ .AppendASCII("1.0.0.0"); |
+ command_line->AppendSwitchNative(apps::kLoadAndLaunchApp, |
+ app_path_.value()); |
+ } |
+ |
+ void SetUpInProcessBrowserTestFixture() override { |
+ PlatformAppBrowserTest::SetUpInProcessBrowserTestFixture(); |
+ |
+ // Skip showing the error message box in order to avoid freezing the main |
+ // thread. |
+ chrome::internal::g_should_skip_message_box_for_test = true; |
+ } |
+ |
+ private: |
+ base::FilePath app_path_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(LoadAndLaunchExtensionBrowserTest); |
+}; |
+ |
} // namespace |
@@ -160,4 +194,19 @@ IN_PROC_BROWSER_TEST_F(PlatformAppLoadAndLaunchBrowserTest, |
LoadAndLaunchApp(); |
} |
+IN_PROC_BROWSER_TEST_F(LoadAndLaunchExtensionBrowserTest, |
+ LoadAndLaunchExtension) { |
+ const std::vector<base::string16>* errors = |
+ ExtensionErrorReporter::GetInstance()->GetErrors(); |
+ |
+ // Expect kUnpackedExtensionInsteadOfAppError. |
+ EXPECT_EQ(1u, errors->size()); |
+ |
+ extensions::ExtensionRegistry* registry = |
+ extensions::ExtensionRegistry::Get(profile()); |
+ EXPECT_EQ(nullptr, registry->GetExtensionById( |
+ "behllobkkfkfnphdnhnkndlbkcpglgmj", |
+ extensions::ExtensionRegistry::EVERYTHING)); |
+} |
+ |
} // namespace apps |