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

Side by Side Diff: chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller_browsertest.mm

Issue 1534123002: [Extensions] Migrate ExtensionInstallPrompt::Delegate to be a callback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.h " 5 #import "chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.h "
6 6
7 #include <utility>
8
7 #include "base/run_loop.h" 9 #include "base/run_loop.h"
8 #include "base/threading/sequenced_worker_pool.h" 10 #include "base/threading/sequenced_worker_pool.h"
11 #include "chrome/browser/extensions/extension_install_prompt_test_helper.h"
9 #include "chrome/browser/ui/browser.h" 12 #include "chrome/browser/ui/browser.h"
10 #import "chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils. h" 13 #import "chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils. h"
11 #import "chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h" 14 #import "chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h"
12 #include "chrome/test/base/in_process_browser_test.h" 15 #include "chrome/test/base/in_process_browser_test.h"
13 #include "content/public/browser/browser_thread.h" 16 #include "content/public/browser/browser_thread.h"
14 #include "content/public/test/test_utils.h" 17 #include "content/public/test/test_utils.h"
15 #include "extensions/common/extension.h" 18 #include "extensions/common/extension.h"
16 19
17 namespace { 20 namespace {
18 21
19 // Similar to ShowExtensionInstallDialogImpl except this allows the created 22 // Similar to ShowExtensionInstallDialogImpl except this allows the created
20 // dialog controller to be captured and manipulated for tests. 23 // dialog controller to be captured and manipulated for tests.
21 void TestingShowAppListInstallDialogController( 24 void TestingShowAppListInstallDialogController(
22 WindowedInstallDialogController** controller, 25 WindowedInstallDialogController** controller,
23 ExtensionInstallPromptShowParams* show_params, 26 ExtensionInstallPromptShowParams* show_params,
24 ExtensionInstallPrompt::Delegate* delegate, 27 const ExtensionInstallPrompt::DoneCallback& done_callback,
25 scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) { 28 scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) {
26 *controller = 29 *controller =
27 new WindowedInstallDialogController(show_params, delegate, prompt.Pass()); 30 new WindowedInstallDialogController(show_params, done_callback,
31 std::move(prompt));
28 } 32 }
29 33
30 typedef InProcessBrowserTest WindowedInstallDialogControllerBrowserTest; 34 typedef InProcessBrowserTest WindowedInstallDialogControllerBrowserTest;
31 35
32 } // namespace 36 } // namespace
33 37
34 // Test for showing an extension install prompt with no parent WebContents. 38 // Test for showing an extension install prompt with no parent WebContents.
35 IN_PROC_BROWSER_TEST_F(WindowedInstallDialogControllerBrowserTest, 39 IN_PROC_BROWSER_TEST_F(WindowedInstallDialogControllerBrowserTest,
36 ShowInstallDialog) { 40 ShowInstallDialog) {
37 // Construct a prompt with a NULL parent window, the way ExtensionEnableFlow 41 // Construct a prompt with a NULL parent window, the way ExtensionEnableFlow
38 // will for the Mac app list. For testing, sets a NULL PageNavigator as well. 42 // will for the Mac app list. For testing, sets a NULL PageNavigator as well.
39 scoped_ptr<ExtensionInstallPrompt> prompt( 43 scoped_ptr<ExtensionInstallPrompt> prompt(
40 new ExtensionInstallPrompt(browser()->profile(), NULL)); 44 new ExtensionInstallPrompt(browser()->profile(), NULL));
41 45
42 WindowedInstallDialogController* controller = NULL; 46 WindowedInstallDialogController* controller = NULL;
43 chrome::MockExtensionInstallPromptDelegate delegate; 47 ExtensionInstallPromptTestHelper test_helper;
44 scoped_refptr<extensions::Extension> extension = 48 scoped_refptr<extensions::Extension> extension =
45 chrome::LoadInstallPromptExtension("permissions", "many-apis.json"); 49 chrome::LoadInstallPromptExtension("permissions", "many-apis.json");
46 prompt->ShowDialog( 50 prompt->ShowDialog(
47 &delegate, extension.get(), nullptr, 51 test_helper.GetCallback(), extension.get(), nullptr,
48 base::Bind(&TestingShowAppListInstallDialogController, &controller)); 52 base::Bind(&TestingShowAppListInstallDialogController, &controller));
49 53
50 // The prompt needs to load the image, which happens on the blocking pool. 54 // The prompt needs to load the image, which happens on the blocking pool.
51 content::RunAllBlockingPoolTasksUntilIdle(); 55 content::RunAllBlockingPoolTasksUntilIdle();
52 ASSERT_TRUE(controller); 56 ASSERT_TRUE(controller);
53 57
54 base::scoped_nsobject<NSWindow> window( 58 base::scoped_nsobject<NSWindow> window(
55 [[[controller->GetViewController() view] window] retain]); 59 [[[controller->GetViewController() view] window] retain]);
56 EXPECT_TRUE([window isVisible]); 60 EXPECT_TRUE([window isVisible]);
57 EXPECT_TRUE([window delegate]); 61 EXPECT_TRUE([window delegate]);
58 EXPECT_EQ(0, delegate.abort_count()); 62 EXPECT_FALSE(test_helper.has_result());
59 63
60 // Press cancel to close the window. 64 // Press cancel to close the window.
61 [[controller->GetViewController() cancelButton] performClick:nil]; 65 [[controller->GetViewController() cancelButton] performClick:nil];
62 EXPECT_FALSE([window delegate]); 66 EXPECT_FALSE([window delegate]);
63 EXPECT_EQ(1, delegate.abort_count()); 67 EXPECT_EQ(ExtensionInstallPrompt::Result::USER_CANCELED,
68 test_helper.result());
64 69
65 // Ensure the window is closed. 70 // Ensure the window is closed.
66 EXPECT_FALSE([window isVisible]); 71 EXPECT_FALSE([window isVisible]);
67 } 72 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698