Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1175)

Unified Diff: chrome/browser/extensions/crx_installer_browsertest.cc

Issue 1527043002: [Extensions] Don't use ExtensionInstallPrompt subclasses for auto-confirmation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/download/download_browsertest.cc ('k') | chrome/browser/extensions/extension_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 681d664037a43f098914b810d012d1584d138801..4ff7ce800ddcb54f775826a385384a453e7f7e82 100644
--- a/chrome/browser/extensions/crx_installer_browsertest.cc
+++ b/chrome/browser/extensions/crx_installer_browsertest.cc
@@ -31,6 +31,7 @@
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/download_test_observer.h"
#include "content/public/test/test_utils.h"
+#include "extensions/browser/extension_dialog_auto_confirm.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
@@ -74,9 +75,10 @@ class MockInstallPrompt;
// MockInstallPrompt. We create the MockInstallPrompt but need to pass
// ownership of it to CrxInstaller, so it isn't safe to hang this data on
// MockInstallPrompt itself becuase we can't guarantee it's lifetime.
-class MockPromptProxy : public base::RefCountedThreadSafe<MockPromptProxy> {
+class MockPromptProxy {
public:
explicit MockPromptProxy(content::WebContents* web_contents);
+ ~MockPromptProxy();
bool did_succeed() const { return !extension_id_.empty(); }
const std::string& extension_id() { return extension_id_; }
@@ -84,14 +86,14 @@ class MockPromptProxy : public base::RefCountedThreadSafe<MockPromptProxy> {
const base::string16& error() const { return error_; }
void set_extension_id(const std::string& id) { extension_id_ = id; }
- void set_confirmation_requested() { confirmation_requested_ = true; }
+ void set_confirmation_requested(bool requested) {
+ confirmation_requested_ = requested;
+ }
void set_error(const base::string16& error) { error_ = error; }
scoped_ptr<ExtensionInstallPrompt> CreatePrompt();
private:
- friend class base::RefCountedThreadSafe<MockPromptProxy>;
- virtual ~MockPromptProxy();
// Data used to create a prompt.
content::WebContents* web_contents_;
@@ -100,6 +102,10 @@ class MockPromptProxy : public base::RefCountedThreadSafe<MockPromptProxy> {
bool confirmation_requested_;
std::string extension_id_;
base::string16 error_;
+
+ scoped_ptr<ScopedTestDialogAutoConfirm> auto_confirm;
+
+ DISALLOW_COPY_AND_ASSIGN(MockPromptProxy);
};
SkBitmap CreateSquareBitmap(int size) {
@@ -139,28 +145,28 @@ class MockInstallPrompt : public ExtensionInstallPrompt {
proxy_(proxy) {}
// Overriding some of the ExtensionInstallUI API.
- void ShowDialog(Delegate* delegate,
- const Extension* extension,
- const SkBitmap* bitmap,
- const ShowDialogCallback& show_dialog_callback) override {
- proxy_->set_confirmation_requested();
- delegate->InstallUIProceed();
- }
void OnInstallSuccess(const Extension* extension, SkBitmap* icon) override {
proxy_->set_extension_id(extension->id());
+ proxy_->set_confirmation_requested(did_call_show_dialog());
base::MessageLoopForUI::current()->QuitWhenIdle();
}
void OnInstallFailure(const CrxInstallError& error) override {
proxy_->set_error(error.message());
+ proxy_->set_confirmation_requested(did_call_show_dialog());
base::MessageLoopForUI::current()->QuitWhenIdle();
}
private:
- scoped_refptr<MockPromptProxy> proxy_;
+ MockPromptProxy* proxy_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockInstallPrompt);
};
MockPromptProxy::MockPromptProxy(content::WebContents* web_contents)
- : web_contents_(web_contents), confirmation_requested_(false) {
+ : web_contents_(web_contents),
+ confirmation_requested_(false),
+ auto_confirm(new ScopedTestDialogAutoConfirm(
+ ScopedTestDialogAutoConfirm::ACCEPT)) {
}
MockPromptProxy::~MockPromptProxy() {}
@@ -171,10 +177,10 @@ scoped_ptr<ExtensionInstallPrompt> MockPromptProxy::CreatePrompt() {
}
-scoped_refptr<MockPromptProxy> CreateMockPromptProxyForBrowser(
+scoped_ptr<MockPromptProxy> CreateMockPromptProxyForBrowser(
Browser* browser) {
- return new MockPromptProxy(
- browser->tab_strip_model()->GetActiveWebContents());
+ return make_scoped_ptr(new MockPromptProxy(
+ browser->tab_strip_model()->GetActiveWebContents()));
}
class ManagementPolicyMock : public extensions::ManagementPolicy::Provider {
@@ -251,7 +257,7 @@ class ExtensionCrxInstallerTest : public ExtensionBrowserTest {
// data dir) with expected id |id|.
void InstallWithPrompt(const char* ext_relpath,
const std::string& id,
- scoped_refptr<MockPromptProxy> mock_install_prompt) {
+ MockPromptProxy* mock_install_prompt) {
base::FilePath ext_path = test_data_dir_.AppendASCII(ext_relpath);
scoped_ptr<WebstoreInstaller::Approval> approval;
@@ -272,10 +278,10 @@ class ExtensionCrxInstallerTest : public ExtensionBrowserTest {
bool record_oauth2_grant) {
ScopedExperimentalCommandLine scope;
- scoped_refptr<MockPromptProxy> mock_prompt =
+ scoped_ptr<MockPromptProxy> mock_prompt =
CreateMockPromptProxyForBrowser(browser());
- InstallWithPrompt("browsertest/scopes", std::string(), mock_prompt);
+ InstallWithPrompt("browsertest/scopes", std::string(), mock_prompt.get());
scoped_ptr<const PermissionSet> permissions =
ExtensionPrefs::Get(browser()->profile())
@@ -328,9 +334,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, Whitelisting) {
browser()->profile());
// Even whitelisted extensions with NPAPI should not prompt.
- scoped_refptr<MockPromptProxy> mock_prompt =
+ scoped_ptr<MockPromptProxy> mock_prompt =
CreateMockPromptProxyForBrowser(browser());
- InstallWithPrompt("uitest/plugins", id, mock_prompt);
+ InstallWithPrompt("uitest/plugins", id, mock_prompt.get());
EXPECT_FALSE(mock_prompt->confirmation_requested());
EXPECT_TRUE(registry->enabled_extensions().GetByID(id));
}
@@ -389,7 +395,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, PackAndInstallExtension) {
std::string crx_path_string(crx_path.value().begin(), crx_path.value().end());
GURL url = GURL(std::string("file:///").append(crx_path_string));
- scoped_refptr<MockPromptProxy> mock_prompt =
+ scoped_ptr<MockPromptProxy> mock_prompt =
CreateMockPromptProxyForBrowser(browser());
download_crx_util::SetMockInstallPromptForTesting(
mock_prompt->CreatePrompt());
@@ -436,7 +442,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, AllowOffStore) {
const bool kTestData[] = {false, true};
for (size_t i = 0; i < arraysize(kTestData); ++i) {
- scoped_refptr<MockPromptProxy> mock_prompt =
+ scoped_ptr<MockPromptProxy> mock_prompt =
CreateMockPromptProxyForBrowser(browser());
scoped_refptr<CrxInstaller> crx_installer(
@@ -560,7 +566,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, Blacklist) {
#endif
IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, NonStrictManifestCheck) {
- scoped_refptr<MockPromptProxy> mock_prompt =
+ scoped_ptr<MockPromptProxy> mock_prompt =
CreateMockPromptProxyForBrowser(browser());
// We want to simulate the case where the webstore sends a more recent
« no previous file with comments | « chrome/browser/download/download_browsertest.cc ('k') | chrome/browser/extensions/extension_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698