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

Side by Side Diff: chrome/browser/ui/views/settings_api_bubble_helper_views.cc

Issue 1087713002: [Reland] [Extensions] Make extension message bubble factory platform-abstract (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Finnur's Created 5 years, 8 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 (c) 2014 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2014 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 #include "chrome/browser/ui/views/settings_api_bubble_helper_views.h" 5 #include "chrome/browser/ui/views/settings_api_bubble_helper_views.h"
6 6
7 #include "chrome/browser/extensions/ntp_overridden_bubble_controller.h" 7 #include "chrome/browser/extensions/ntp_overridden_bubble_controller.h"
8 #include "chrome/browser/extensions/settings_api_bubble_controller.h" 8 #include "chrome/browser/extensions/settings_api_bubble_controller.h"
9 #include "chrome/browser/extensions/settings_api_helpers.h" 9 #include "chrome/browser/extensions/settings_api_helpers.h"
10 #include "chrome/browser/ui/browser_finder.h" 10 #include "chrome/browser/ui/browser_finder.h"
11 #include "chrome/browser/ui/tabs/tab_strip_model.h" 11 #include "chrome/browser/ui/tabs/tab_strip_model.h"
12 #include "chrome/browser/ui/views/extensions/extension_message_bubble_view.h" 12 #include "chrome/browser/ui/views/extensions/extension_message_bubble_view.h"
13 #include "chrome/browser/ui/views/frame/browser_view.h" 13 #include "chrome/browser/ui/views/frame/browser_view.h"
14 #include "chrome/browser/ui/views/settings_api_bubble_helper_views.h" 14 #include "chrome/browser/ui/views/settings_api_bubble_helper_views.h"
15 #include "chrome/browser/ui/views/toolbar/home_button.h" 15 #include "chrome/browser/ui/views/toolbar/home_button.h"
16 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" 16 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
17 #include "chrome/browser/ui/views/toolbar/wrench_toolbar_button.h" 17 #include "chrome/browser/ui/views/toolbar/wrench_toolbar_button.h"
18 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h" 18 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h"
19 #include "chrome/common/url_constants.h" 19 #include "chrome/common/url_constants.h"
20 #include "content/public/browser/browser_url_handler.h" 20 #include "content/public/browser/browser_url_handler.h"
21 #include "content/public/browser/navigation_entry.h" 21 #include "content/public/browser/navigation_entry.h"
22 22
23 namespace extensions { 23 namespace extensions {
24 24
25 namespace { 25 namespace {
26 26
27 void ShowSettingsApiBubble(SettingsApiOverrideType type, 27 void ShowSettingsApiBubble(SettingsApiOverrideType type,
28 const std::string& extension_id,
29 Profile* profile, 28 Profile* profile,
30 views::View* anchor_view, 29 views::View* anchor_view,
31 views::BubbleBorder::Arrow arrow) { 30 views::BubbleBorder::Arrow arrow) {
32 scoped_ptr<SettingsApiBubbleController> settings_api_bubble( 31 scoped_ptr<SettingsApiBubbleController> settings_api_bubble(
33 new SettingsApiBubbleController(profile, type)); 32 new SettingsApiBubbleController(profile, type));
34 if (!settings_api_bubble->ShouldShow(extension_id)) 33 if (!settings_api_bubble->ShouldShow())
35 return; 34 return;
36 35
37 SettingsApiBubbleController* controller = settings_api_bubble.get(); 36 SettingsApiBubbleController* controller = settings_api_bubble.get();
38 ExtensionMessageBubbleView* bubble_delegate = new ExtensionMessageBubbleView( 37 ExtensionMessageBubbleView* bubble_delegate = new ExtensionMessageBubbleView(
39 anchor_view, arrow, settings_api_bubble.Pass()); 38 anchor_view, arrow, settings_api_bubble.Pass());
40 views::BubbleDelegateView::CreateBubble(bubble_delegate); 39 views::BubbleDelegateView::CreateBubble(bubble_delegate);
41 controller->Show(bubble_delegate); 40 controller->Show(bubble_delegate);
42 } 41 }
43 42
44 } // namespace 43 } // namespace
45 44
46 void MaybeShowExtensionControlledHomeNotification(Browser* browser) { 45 void MaybeShowExtensionControlledHomeNotification(Browser* browser) {
47 #if !defined(OS_WIN) 46 #if !defined(OS_WIN)
48 return; 47 return;
49 #endif 48 #endif
50 49
51 const Extension* extension = 50 // The bubble will try to anchor itself against the home button
52 GetExtensionOverridingHomepage(browser->profile()); 51 views::View* anchor_view = BrowserView::GetBrowserViewForBrowser(browser)->
53 if (extension) { 52 toolbar()->home_button();
54 // The bubble will try to anchor itself against the home button 53 ShowSettingsApiBubble(BUBBLE_TYPE_HOME_PAGE,
55 views::View* anchor_view = BrowserView::GetBrowserViewForBrowser(browser)-> 54 browser->profile(),
56 toolbar()->home_button(); 55 anchor_view,
57 ShowSettingsApiBubble(BUBBLE_TYPE_HOME_PAGE, 56 views::BubbleBorder::TOP_LEFT);
58 extension->id(),
59 browser->profile(),
60 anchor_view,
61 views::BubbleBorder::TOP_LEFT);
62 }
63 } 57 }
64 58
65 void MaybeShowExtensionControlledSearchNotification( 59 void MaybeShowExtensionControlledSearchNotification(
66 Profile* profile, 60 Profile* profile,
67 content::WebContents* web_contents, 61 content::WebContents* web_contents,
68 const AutocompleteMatch& match) { 62 const AutocompleteMatch& match) {
69 #if !defined(OS_WIN) 63 #if !defined(OS_WIN)
70 return; 64 return;
71 #endif 65 #endif
72 66
73 if (AutocompleteMatch::IsSearchType(match.type) && 67 if (AutocompleteMatch::IsSearchType(match.type) &&
74 match.type != AutocompleteMatchType::SEARCH_OTHER_ENGINE) { 68 match.type != AutocompleteMatchType::SEARCH_OTHER_ENGINE) {
75 const Extension* extension = GetExtensionOverridingSearchEngine(profile); 69 ToolbarView* toolbar =
76 if (extension) { 70 BrowserView::GetBrowserViewForBrowser(
77 ToolbarView* toolbar = 71 chrome::FindBrowserWithWebContents(web_contents))->toolbar();
78 BrowserView::GetBrowserViewForBrowser( 72 ShowSettingsApiBubble(BUBBLE_TYPE_SEARCH_ENGINE,
79 chrome::FindBrowserWithWebContents(web_contents))->toolbar(); 73 profile,
80 ShowSettingsApiBubble(BUBBLE_TYPE_SEARCH_ENGINE, 74 toolbar->app_menu(),
81 extension->id(), 75 views::BubbleBorder::TOP_RIGHT);
82 profile,
83 toolbar->app_menu(),
84 views::BubbleBorder::TOP_RIGHT);
85 }
86 } 76 }
87 } 77 }
88 78
89 void MaybeShowExtensionControlledNewTabPage( 79 void MaybeShowExtensionControlledNewTabPage(
90 Browser* browser, content::WebContents* web_contents) { 80 Browser* browser, content::WebContents* web_contents) {
91 #if !defined(OS_WIN) 81 #if !defined(OS_WIN)
92 return; 82 return;
93 #endif 83 #endif
94 84
95 content::NavigationEntry* entry = 85 content::NavigationEntry* entry =
(...skipping 22 matching lines...) Expand all
118 NtpOverriddenBubbleController* controller = ntp_overridden_bubble.get(); 108 NtpOverriddenBubbleController* controller = ntp_overridden_bubble.get();
119 ExtensionMessageBubbleView* bubble_delegate = new ExtensionMessageBubbleView( 109 ExtensionMessageBubbleView* bubble_delegate = new ExtensionMessageBubbleView(
120 BrowserView::GetBrowserViewForBrowser(browser)->toolbar()->app_menu(), 110 BrowserView::GetBrowserViewForBrowser(browser)->toolbar()->app_menu(),
121 views::BubbleBorder::TOP_RIGHT, 111 views::BubbleBorder::TOP_RIGHT,
122 ntp_overridden_bubble.Pass()); 112 ntp_overridden_bubble.Pass());
123 views::BubbleDelegateView::CreateBubble(bubble_delegate); 113 views::BubbleDelegateView::CreateBubble(bubble_delegate);
124 controller->Show(bubble_delegate); 114 controller->Show(bubble_delegate);
125 } 115 }
126 116
127 } // namespace extensions 117 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698