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

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

Issue 11087071: Making ShowExtensionInstallDialog a callback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix android build Created 8 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/extension_install_dialog_controller. h" 5 #import "chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller. h"
6 6
7 #include "chrome/browser/ui/browser.h" 7 #include "chrome/browser/ui/browser.h"
8 #include "chrome/browser/ui/browser_finder.h" 8 #include "chrome/browser/ui/browser_finder.h"
9 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_controlle r.h" 9 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_controlle r.h"
10 #import "chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h" 10 #import "chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h"
11 #include "chrome/browser/ui/tab_contents/tab_contents.h" 11 #include "chrome/browser/ui/tab_contents/tab_contents.h"
12 #include "chrome/browser/ui/tabs/tab_strip_model.h" 12 #include "chrome/browser/ui/tabs/tab_strip_model.h"
13 13
14 namespace {
15
16 void ShowExtensionInstallDialogImpl(
17 gfx::NativeWindow parent,
18 content::PageNavigator* navigator,
19 ExtensionInstallPrompt::Delegate* delegate,
20 const ExtensionInstallPrompt::Prompt& prompt) {
21 // TODO(sail) Update ShowExtensionInstallDialogImpl to take a web contents.
22 Browser* browser = browser::FindBrowserWithWindow(parent);
23 if (!browser)
24 return;
25 TabContents* tab = browser->tab_strip_model()->GetActiveTabContents();
26 if (!tab)
27 return;
28
29 // This object will delete itself when the dialog closes.
30 new ExtensionInstallDialogController(tab->web_contents(),
31 navigator,
32 delegate,
33 prompt);
34 }
35
36 } // namespace
37
14 ExtensionInstallDialogController::ExtensionInstallDialogController( 38 ExtensionInstallDialogController::ExtensionInstallDialogController(
15 content::WebContents* webContents, 39 content::WebContents* webContents,
16 content::PageNavigator* navigator, 40 content::PageNavigator* navigator,
17 ExtensionInstallPrompt::Delegate* delegate, 41 ExtensionInstallPrompt::Delegate* delegate,
18 const ExtensionInstallPrompt::Prompt& prompt) : delegate_(delegate) { 42 const ExtensionInstallPrompt::Prompt& prompt) : delegate_(delegate) {
19 view_controller_.reset([[ExtensionInstallViewController alloc] 43 view_controller_.reset([[ExtensionInstallViewController alloc]
20 initWithNavigator:navigator 44 initWithNavigator:navigator
21 delegate:this 45 delegate:this
22 prompt:prompt]); 46 prompt:prompt]);
23 window_controller_.reset([[ConstrainedWindowController alloc] 47 window_controller_.reset([[ConstrainedWindowController alloc]
24 initWithParentWebContents:webContents 48 initWithParentWebContents:webContents
25 embeddedView:[view_controller_ view]]); 49 embeddedView:[view_controller_ view]]);
26 } 50 }
27 51
28 ExtensionInstallDialogController::~ExtensionInstallDialogController() { 52 ExtensionInstallDialogController::~ExtensionInstallDialogController() {
29 } 53 }
30 54
31 void ExtensionInstallDialogController::InstallUIProceed() { 55 void ExtensionInstallDialogController::InstallUIProceed() {
32 delegate_->InstallUIProceed(); 56 delegate_->InstallUIProceed();
33 [window_controller_ close]; 57 [window_controller_ close];
34 delete this; 58 delete this;
35 } 59 }
36 60
37 void ExtensionInstallDialogController::InstallUIAbort(bool user_initiated) { 61 void ExtensionInstallDialogController::InstallUIAbort(bool user_initiated) {
38 delegate_->InstallUIAbort(user_initiated); 62 delegate_->InstallUIAbort(user_initiated);
39 [window_controller_ close]; 63 [window_controller_ close];
40 delete this; 64 delete this;
41 } 65 }
42 66
43 void ShowExtensionInstallDialogImpl( 67 // static
44 gfx::NativeWindow parent, 68 ExtensionInstallPrompt::ShowDialogCallback
45 content::PageNavigator* navigator, 69 ExtensionInstallPrompt::GetDefaultShowDialogCallback() {
46 ExtensionInstallPrompt::Delegate* delegate, 70 return base::Bind(&ShowExtensionInstallDialogImpl);
47 const ExtensionInstallPrompt::Prompt& prompt) {
48 // TODO(sail) Update ShowExtensionInstallDialogImpl to take a web contents.
49 Browser* browser = browser::FindBrowserWithWindow(parent);
50 if (!browser)
51 return;
52 TabContents* tab = browser->tab_strip_model()->GetActiveTabContents();
53 if (!tab)
54 return;
55
56 // This object will delete itself when the dialog closes.
57 new ExtensionInstallDialogController(tab->web_contents(),
58 navigator,
59 delegate,
60 prompt);
61 } 71 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698