Chromium Code Reviews| Index: chrome/browser/extensions/webstore_inline_install_browsertest.cc |
| diff --git a/chrome/browser/extensions/webstore_inline_install_browsertest.cc b/chrome/browser/extensions/webstore_inline_install_browsertest.cc |
| index becb99dba97cac85ee6760495d440697872b7328..737ce5bf45499c62dab6985ab023e10862a7dfee 100644 |
| --- a/chrome/browser/extensions/webstore_inline_install_browsertest.cc |
| +++ b/chrome/browser/extensions/webstore_inline_install_browsertest.cc |
| @@ -9,6 +9,7 @@ |
| #include "chrome/browser/extensions/extension_install_dialog.h" |
| #include "chrome/browser/extensions/extension_install_ui.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| +#include "chrome/browser/extensions/startup_helper.h" |
| #include "chrome/browser/extensions/webstore_inline_installer.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/browser_tabstrip.h" |
| @@ -17,6 +18,8 @@ |
| #include "chrome/common/chrome_switches.h" |
| #include "chrome/test/base/in_process_browser_test.h" |
| #include "chrome/test/base/ui_test_utils.h" |
| +#include "content/public/browser/notification_registrar.h" |
| +#include "content/public/browser/notification_service.h" |
| #include "content/public/browser/notification_types.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/test/browser_test_utils.h" |
| @@ -25,10 +28,12 @@ |
| #include "net/base/mock_host_resolver.h" |
| using content::WebContents; |
| +using extensions::Extension; |
| const char kWebstoreDomain[] = "cws.com"; |
| const char kAppDomain[] = "app.com"; |
| const char kNonAppDomain[] = "nonapp.com"; |
| +const char kTestExtensionId[] = "ecglahbcnmdpdciemllbhojghbkagdje"; |
| class WebstoreInlineInstallTest : public InProcessBrowserTest { |
| public: |
| @@ -93,8 +98,7 @@ IN_PROC_BROWSER_TEST_F(WebstoreInlineInstallTest, Install) { |
| RunInlineInstallTest("runTest"); |
| const extensions::Extension* extension = browser()->profile()-> |
| - GetExtensionService()->GetExtensionById( |
| - "ecglahbcnmdpdciemllbhojghbkagdje", false); |
| + GetExtensionService()->GetExtensionById(kTestExtensionId, false); |
| EXPECT_TRUE(extension); |
| } |
| @@ -174,3 +178,55 @@ IN_PROC_BROWSER_TEST_F(WebstoreInlineInstallUnpackFailureTest, |
| RunInlineInstallTest("runTest"); |
| } |
| + |
| +class CommandLineWebstoreInstall : public WebstoreInlineInstallTest, |
| + public content::NotificationObserver { |
| + public: |
| + CommandLineWebstoreInstall() : saw_install_(false) {} |
| + virtual ~CommandLineWebstoreInstall() {} |
| + |
| + virtual void SetUpOnMainThread() OVERRIDE { |
| + WebstoreInlineInstallTest::SetUpOnMainThread(); |
| + registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALLED, |
| + content::NotificationService::AllSources()); |
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| + switches::kInstallFromWebstore, kTestExtensionId); |
|
asargent_no_longer_on_chrome
2012/09/14 23:24:35
FYI, I bailed on the approach of passing this comm
|
| + } |
| + |
| + bool saw_install() { return saw_install_; } |
| + |
| + protected: |
| + // NotificationObserver interface. |
| + virtual void Observe(int type, |
| + const content::NotificationSource& source, |
| + const content::NotificationDetails& details) OVERRIDE { |
| + ASSERT_EQ(chrome::NOTIFICATION_EXTENSION_INSTALLED, type); |
| + const Extension* extension = content::Details<Extension>(details).ptr(); |
| + ASSERT_TRUE(extension != NULL); |
| + EXPECT_EQ(extension->id(), kTestExtensionId); |
| + saw_install_ = true; |
| + } |
| + |
| + content::NotificationRegistrar registrar_; |
| + |
| + // Have we seen an installation notification for kTestExtensionId ? |
| + bool saw_install_; |
| +}; |
| + |
| +IN_PROC_BROWSER_TEST_F(CommandLineWebstoreInstall, Accept) { |
| + CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| + command_line->AppendSwitchASCII( |
| + switches::kAppsGalleryInstallAutoConfirmForTests, "accept"); |
| + extensions::StartupHelper helper; |
| + EXPECT_TRUE(helper.InstallFromWebstore(*command_line, browser()->profile())); |
| + EXPECT_TRUE(saw_install()); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(CommandLineWebstoreInstall, Cancel) { |
| + CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| + command_line->AppendSwitchASCII( |
| + switches::kAppsGalleryInstallAutoConfirmForTests, "cancel"); |
| + extensions::StartupHelper helper; |
| + EXPECT_FALSE(helper.InstallFromWebstore(*command_line, browser()->profile())); |
| + EXPECT_FALSE(saw_install()); |
| +} |