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

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

Issue 219593002: Add unit test for the Settings API Bubble. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Synced Created 6 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 | Annotate | Revision Log
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/settings_api_bubble_controller.h" 7 #include "chrome/browser/extensions/settings_api_bubble_controller.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/extensions/settings_api_helpers.h"
9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/browser_finder.h" 9 #include "chrome/browser/ui/browser_finder.h"
11 #include "chrome/browser/ui/views/extensions/extension_message_bubble_view.h" 10 #include "chrome/browser/ui/views/extensions/extension_message_bubble_view.h"
12 #include "chrome/browser/ui/views/frame/browser_view.h" 11 #include "chrome/browser/ui/views/frame/browser_view.h"
13 #include "chrome/browser/ui/views/settings_api_bubble_helper_views.h" 12 #include "chrome/browser/ui/views/settings_api_bubble_helper_views.h"
14 #include "chrome/browser/ui/views/toolbar/home_button.h" 13 #include "chrome/browser/ui/views/toolbar/home_button.h"
15 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" 14 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
16 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h" 15 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h"
17 #include "content/public/browser/browser_context.h"
18 #include "extensions/browser/extension_registry.h"
19 16
20 namespace { 17 namespace {
21 18
22 void ShowSettingsApiBubble(extensions::SettingsApiOverrideType type, 19 void ShowSettingsApiBubble(extensions::SettingsApiOverrideType type,
23 const std::string& extension_id, 20 const std::string& extension_id,
24 Profile* profile, 21 Profile* profile,
25 views::View* anchor_view, 22 views::View* anchor_view,
26 views::BubbleBorder::Arrow arrow) { 23 views::BubbleBorder::Arrow arrow) {
27 scoped_ptr<extensions::SettingsApiBubbleController> settings_api_bubble( 24 scoped_ptr<extensions::SettingsApiBubbleController> settings_api_bubble(
28 new extensions::SettingsApiBubbleController(profile, type)); 25 new extensions::SettingsApiBubbleController(profile, type));
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 chrome::FindBrowserWithWebContents(web_contents))->toolbar(); 78 chrome::FindBrowserWithWebContents(web_contents))->toolbar();
82 ShowSettingsApiBubble(BUBBLE_TYPE_SEARCH_ENGINE, 79 ShowSettingsApiBubble(BUBBLE_TYPE_SEARCH_ENGINE,
83 extension->id(), 80 extension->id(),
84 profile, 81 profile,
85 toolbar->app_menu(), 82 toolbar->app_menu(),
86 views::BubbleBorder::TOP_RIGHT); 83 views::BubbleBorder::TOP_RIGHT);
87 } 84 }
88 } 85 }
89 } 86 }
90 87
91 const extensions::SettingsOverrides* FindOverridingExtension(
92 content::BrowserContext* browser_context,
93 SettingsApiOverrideType type,
94 const Extension** extension) {
95 const extensions::ExtensionSet& extensions =
96 extensions::ExtensionRegistry::Get(browser_context)->enabled_extensions();
97
98 for (extensions::ExtensionSet::const_iterator it = extensions.begin();
99 it != extensions.end();
100 ++it) {
101 const extensions::SettingsOverrides* settings =
102 extensions::SettingsOverrides::Get(*it);
103 if (settings) {
104 if ((type == BUBBLE_TYPE_HOME_PAGE && settings->homepage) ||
105 (type == BUBBLE_TYPE_STARTUP_PAGES &&
106 !settings->startup_pages.empty()) ||
107 (type == BUBBLE_TYPE_SEARCH_ENGINE && settings->search_engine)) {
108 *extension = *it;
109 return settings;
110 }
111 }
112 }
113
114 return NULL;
115 }
116
117 const Extension* OverridesHomepage(content::BrowserContext* browser_context,
118 GURL* home_page_url) {
119 const extensions::Extension* extension = NULL;
120 const extensions::SettingsOverrides* settings =
121 FindOverridingExtension(
122 browser_context, BUBBLE_TYPE_HOME_PAGE, &extension);
123 if (settings && home_page_url)
124 *home_page_url = *settings->homepage;
125 return extension;
126 }
127
128 const Extension* OverridesStartupPages(content::BrowserContext* browser_context,
129 std::vector<GURL>* startup_pages) {
130 const extensions::Extension* extension = NULL;
131 const extensions::SettingsOverrides* settings =
132 FindOverridingExtension(
133 browser_context, BUBBLE_TYPE_STARTUP_PAGES, &extension);
134 if (settings && startup_pages) {
135 startup_pages->clear();
136 for (std::vector<GURL>::const_iterator it = settings->startup_pages.begin();
137 it != settings->startup_pages.end();
138 ++it)
139 startup_pages->push_back(GURL(*it));
140 }
141 return extension;
142 }
143
144 const Extension* OverridesSearchEngine(
145 content::BrowserContext* browser_context,
146 api::manifest_types::ChromeSettingsOverrides::Search_provider*
147 search_provider) {
148 const extensions::Extension* extension = NULL;
149 const extensions::SettingsOverrides* settings =
150 FindOverridingExtension(
151 browser_context, BUBBLE_TYPE_SEARCH_ENGINE, &extension);
152 if (settings && search_provider)
153 search_provider = settings->search_engine.get();
154 return extension;
155 }
156
157 } // namespace extensions 88 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/settings_api_bubble_helper_views.h ('k') | chrome/chrome_browser_extensions.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698