Chromium Code Reviews| Index: chrome/browser/extensions/crx_installer_browsertest.cc |
| diff --git a/chrome/browser/extensions/crx_installer_browsertest.cc b/chrome/browser/extensions/crx_installer_browsertest.cc |
| index 0773a3f42f0a6ad3d2e8da4ea33a18bbf0ccbc72..100a34c82531d5c566b52bb438a53ac7cca709c9 100644 |
| --- a/chrome/browser/extensions/crx_installer_browsertest.cc |
| +++ b/chrome/browser/extensions/crx_installer_browsertest.cc |
| @@ -2,6 +2,10 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include "chrome/browser/download/download_crx_util.h" |
| +#include "chrome/browser/download/download_service.h" |
| +#include "chrome/browser/download/download_service_factory.h" |
| +#include "chrome/browser/download/download_test_observer.h" |
| #include "chrome/browser/extensions/crx_installer.h" |
| #include "chrome/browser/extensions/extension_browsertest.h" |
| #include "chrome/browser/extensions/extension_install_ui.h" |
| @@ -16,6 +20,8 @@ class SkBitmap; |
| namespace { |
| +// Observer waits for exactly one download to finish. |
| + |
| class MockInstallUI : public ExtensionInstallUI { |
| public: |
| explicit MockInstallUI(Profile* profile) : |
| @@ -116,3 +122,37 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, PlatformAppCrx) { |
| EXPECT_TRUE(InstallExtension( |
| test_data_dir_.AppendASCII("generic_platform_app.crx"), 1)); |
| } |
| + |
| +IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, PackAndInstallExtension) { |
| + const int kNumDownloadsExpected = 1; |
| + const bool kExpectFileSelectDialog = false; |
| + |
| + VLOG(1) << "PackAndInstallExtension: Packing extension"; |
|
Aaron Boodman
2012/04/11 00:12:38
I would not trust VLOG(1). I can't remember what l
|
| + FilePath crx_path = PackExtension( |
| + test_data_dir_.AppendASCII("common/background_page")); |
| + ASSERT_FALSE(crx_path.empty()); |
| + std::string crx_path_string(crx_path.value().begin(), crx_path.value().end()); |
| + GURL url = GURL(std::string("file:///").append(crx_path_string)); |
| + |
| + MockInstallUI* mock_ui = new MockInstallUI(browser()->profile()); |
| + download_crx_util::SetMockInstallUIForTesting(mock_ui); |
| + |
| + VLOG(1) << "PackAndInstallExtension: Getting download manager"; |
| + content::DownloadManager* download_manager = |
| + DownloadServiceFactory::GetForProfile( |
| + browser()->profile())->GetDownloadManager(); |
| + |
| + VLOG(1) << "PackAndInstallExtension: Setting observer"; |
| + scoped_ptr<DownloadTestObserver> observer( |
| + new DownloadTestObserverTerminal( |
| + download_manager, kNumDownloadsExpected, kExpectFileSelectDialog, |
| + DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); |
| + VLOG(1) << "PackAndInstallExtension: Navigating to URL"; |
| + ui_test_utils::NavigateToURLWithDisposition(browser(), url, CURRENT_TAB, |
| + ui_test_utils::BROWSER_TEST_NONE); |
| + |
| + EXPECT_TRUE(WaitForExtensionInstall()); |
| + VLOG(1) << "PackAndInstallExtension: Extension install"; |
| + EXPECT_TRUE(mock_ui->confirmation_requested()); |
| + VLOG(1) << "PackAndInstallExtension: Extension install confirmed"; |
| +} |