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

Unified Diff: chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc

Issue 547253002: Ensure app install is aborted when the install dialog is closed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Lower risk fix Created 6 years, 3 months 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/ui/views/extensions/extension_install_dialog_view.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc
diff --git a/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc b/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc
index 9cb4e9147e6d7bdbd28fac664e10577b729a6348..90824b90247cdc66f6ff757a6f9385459c91a05f 100644
--- a/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc
+++ b/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc
@@ -69,35 +69,43 @@ class MockExtensionInstallPrompt : public ExtensionInstallPrompt {
ExtensionInstallPrompt::Prompt* prompt_;
};
-class ScrollbarTest : public ExtensionBrowserTest {
+class ExtensionInstallDialogViewTestBase : public ExtensionBrowserTest {
protected:
- ScrollbarTest();
- virtual ~ScrollbarTest() {}
+ explicit ExtensionInstallDialogViewTestBase(
+ ExtensionInstallPrompt::PromptType prompt_type);
+ virtual ~ExtensionInstallDialogViewTestBase() {}
virtual void SetUpOnMainThread() OVERRIDE;
+ ExtensionInstallPrompt::Prompt* prompt() { return prompt_.get(); }
+ content::WebContents* web_contents() { return web_contents_; }
+ MockExtensionInstallPromptDelegate* delegate() { return &delegate_; }
+
void SetPromptPermissions(std::vector<base::string16> permissions);
void SetPromptDetails(std::vector<base::string16> details);
void SetPromptRetainedFiles(std::vector<base::FilePath> files);
- bool IsScrollbarVisible();
-
private:
const extensions::Extension* extension_;
MockExtensionInstallPrompt* install_prompt_;
scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
content::WebContents* web_contents_;
+ MockExtensionInstallPromptDelegate delegate_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionInstallDialogViewTestBase);
};
-ScrollbarTest::ScrollbarTest() :
- extension_(NULL),
- install_prompt_(NULL),
- prompt_(new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::PERMISSIONS_PROMPT)),
- web_contents_(NULL) {}
+ExtensionInstallDialogViewTestBase::ExtensionInstallDialogViewTestBase(
+ ExtensionInstallPrompt::PromptType prompt_type)
+ : extension_(NULL),
+ install_prompt_(NULL),
+ prompt_(new ExtensionInstallPrompt::Prompt(prompt_type)),
+ web_contents_(NULL) {
+}
-void ScrollbarTest::SetUpOnMainThread() {
+void ExtensionInstallDialogViewTestBase::SetUpOnMainThread() {
ExtensionBrowserTest::SetUpOnMainThread();
+
extension_ = ExtensionBrowserTest::LoadExtension(test_data_dir_.AppendASCII(
"install_prompt/permissions_scrollbar_regression"));
@@ -118,26 +126,41 @@ void ScrollbarTest::SetUpOnMainThread() {
this->SetPromptRetainedFiles(std::vector<base::FilePath>());
}
-void ScrollbarTest::SetPromptPermissions(
+void ExtensionInstallDialogViewTestBase::SetPromptPermissions(
std::vector<base::string16> permissions) {
prompt_->SetPermissions(permissions);
}
-void ScrollbarTest::SetPromptDetails(
+void ExtensionInstallDialogViewTestBase::SetPromptDetails(
std::vector<base::string16> details) {
prompt_->SetPermissionsDetails(details);
}
-void ScrollbarTest::SetPromptRetainedFiles(
+void ExtensionInstallDialogViewTestBase::SetPromptRetainedFiles(
std::vector<base::FilePath> files) {
prompt_->set_retained_files(files);
}
+class ScrollbarTest : public ExtensionInstallDialogViewTestBase {
+ protected:
+ ScrollbarTest();
+ virtual ~ScrollbarTest() {}
+
+ bool IsScrollbarVisible();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ScrollbarTest);
+};
+
+ScrollbarTest::ScrollbarTest()
+ : ExtensionInstallDialogViewTestBase(
+ ExtensionInstallPrompt::PERMISSIONS_PROMPT) {
+}
+
bool ScrollbarTest::IsScrollbarVisible() {
- ExtensionInstallPrompt::ShowParams show_params(web_contents_);
- MockExtensionInstallPromptDelegate delegate;
- ExtensionInstallDialogView* dialog =
- new ExtensionInstallDialogView(show_params.navigator, &delegate, prompt_);
+ ExtensionInstallPrompt::ShowParams show_params(web_contents());
+ ExtensionInstallDialogView* dialog = new ExtensionInstallDialogView(
+ show_params.navigator, delegate(), prompt());
// Create the modal view around the install dialog view.
views::Widget* modal =
@@ -178,3 +201,61 @@ IN_PROC_BROWSER_TEST_F(ScrollbarTest, ScrollbarRegression) {
this->SetPromptDetails(details);
ASSERT_FALSE(IsScrollbarVisible()) << "Scrollbar is visible";
}
+
+class ExtensionInstallDialogViewTest
+ : public ExtensionInstallDialogViewTestBase {
+ protected:
+ ExtensionInstallDialogViewTest()
+ : ExtensionInstallDialogViewTestBase(
+ ExtensionInstallPrompt::INSTALL_PROMPT) {}
+ virtual ~ExtensionInstallDialogViewTest() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ExtensionInstallDialogViewTest);
+};
+
+// Verifies that the delegate is notified when the user selects to accept or
+// cancel the install.
+IN_PROC_BROWSER_TEST_F(ExtensionInstallDialogViewTest, NotifyDelegate) {
+ {
+ // The user confirms the install.
+ MockExtensionInstallPromptDelegate delegate;
+ scoped_ptr<ExtensionInstallDialogView> dialog(
+ new ExtensionInstallDialogView(web_contents(), &delegate, prompt()));
+ views::DialogDelegateView* delegate_view = dialog.get();
+
+ delegate_view->Accept();
+ delegate_view->OnClosed();
+ dialog.reset();
+
+ EXPECT_EQ(0, delegate.abort_count());
+ EXPECT_EQ(1, delegate.proceed_count());
+ }
+
+ {
+ // The user cancels the install.
+ MockExtensionInstallPromptDelegate delegate;
+ scoped_ptr<ExtensionInstallDialogView> dialog(
+ new ExtensionInstallDialogView(web_contents(), &delegate, prompt()));
+ views::DialogDelegateView* delegate_view = dialog.get();
+
+ delegate_view->Cancel();
+ delegate_view->OnClosed();
+ dialog.reset();
+
+ EXPECT_EQ(1, delegate.abort_count());
+ EXPECT_EQ(0, delegate.proceed_count());
+ }
+
+ {
+ // Corner case: Dialog is closed without the user explicitly choosing to
+ // proceed or cancel.
+ MockExtensionInstallPromptDelegate delegate;
+ scoped_ptr<ExtensionInstallDialogView> dialog(
+ new ExtensionInstallDialogView(web_contents(), &delegate, prompt()));
+ dialog.reset();
+
+ EXPECT_EQ(1, delegate.abort_count());
+ EXPECT_EQ(0, delegate.proceed_count());
+ }
+}
« no previous file with comments | « chrome/browser/ui/views/extensions/extension_install_dialog_view.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698