| 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..0fd70900a4405d3cdf8b8ddf5662f27fadf1873d 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;
|
| +
|
| + LOG(ERROR) << "PackAndInstallExtension: Packing extension";
|
| + 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);
|
| +
|
| + LOG(ERROR) << "PackAndInstallExtension: Getting download manager";
|
| + content::DownloadManager* download_manager =
|
| + DownloadServiceFactory::GetForProfile(
|
| + browser()->profile())->GetDownloadManager();
|
| +
|
| + LOG(ERROR) << "PackAndInstallExtension: Setting observer";
|
| + scoped_ptr<DownloadTestObserver> observer(
|
| + new DownloadTestObserverTerminal(
|
| + download_manager, kNumDownloadsExpected, kExpectFileSelectDialog,
|
| + DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT));
|
| + LOG(ERROR) << "PackAndInstallExtension: Navigating to URL";
|
| + ui_test_utils::NavigateToURLWithDisposition(browser(), url, CURRENT_TAB,
|
| + ui_test_utils::BROWSER_TEST_NONE);
|
| +
|
| + EXPECT_TRUE(WaitForExtensionInstall());
|
| + LOG(ERROR) << "PackAndInstallExtension: Extension install";
|
| + EXPECT_TRUE(mock_ui->confirmation_requested());
|
| + LOG(ERROR) << "PackAndInstallExtension: Extension install confirmed";
|
| +}
|
|
|