| OLD | NEW |
| 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 Loading... |
| 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 |
| OLD | NEW |