OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/extensions/extension_web_ui.h" | 5 #include "chrome/browser/extensions/extension_web_ui.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 }; | 122 }; |
123 | 123 |
124 } // namespace | 124 } // namespace |
125 | 125 |
126 const char ExtensionWebUI::kExtensionURLOverrides[] = | 126 const char ExtensionWebUI::kExtensionURLOverrides[] = |
127 "extensions.chrome_url_overrides"; | 127 "extensions.chrome_url_overrides"; |
128 | 128 |
129 ExtensionWebUI::ExtensionWebUI(TabContents* tab_contents, const GURL& url) | 129 ExtensionWebUI::ExtensionWebUI(TabContents* tab_contents, const GURL& url) |
130 : ChromeWebUI(tab_contents), | 130 : ChromeWebUI(tab_contents), |
131 url_(url) { | 131 url_(url) { |
132 ExtensionService* service = tab_contents->profile()->GetExtensionService(); | 132 Profile* profile = static_cast<Profile*>(tab_contents->context()); |
| 133 ExtensionService* service = profile->GetExtensionService(); |
133 const Extension* extension = service->GetExtensionByURL(url); | 134 const Extension* extension = service->GetExtensionByURL(url); |
134 if (!extension) | 135 if (!extension) |
135 extension = service->GetExtensionByWebExtent(url); | 136 extension = service->GetExtensionByWebExtent(url); |
136 DCHECK(extension); | 137 DCHECK(extension); |
137 // Only hide the url for internal pages (e.g. chrome-extension or packaged | 138 // Only hide the url for internal pages (e.g. chrome-extension or packaged |
138 // component apps like bookmark manager. | 139 // component apps like bookmark manager. |
139 should_hide_url_ = !extension->is_hosted_app(); | 140 should_hide_url_ = !extension->is_hosted_app(); |
140 | 141 |
141 // The base class defaults to enabling web ui bindings, but we don't need | 142 // The base class defaults to enabling web ui bindings, but we don't need |
142 // those. | 143 // those. |
(...skipping 13 matching lines...) Expand all Loading... |
156 should_hide_url_ = false; | 157 should_hide_url_ = false; |
157 } | 158 } |
158 } | 159 } |
159 | 160 |
160 // Hack: A few things we specialize just for the bookmark manager. | 161 // Hack: A few things we specialize just for the bookmark manager. |
161 if (extension->id() == extension_misc::kBookmarkManagerId) { | 162 if (extension->id() == extension_misc::kBookmarkManagerId) { |
162 TabContentsWrapper* tab = | 163 TabContentsWrapper* tab = |
163 TabContentsWrapper::GetCurrentWrapperForContents(tab_contents_); | 164 TabContentsWrapper::GetCurrentWrapperForContents(tab_contents_); |
164 DCHECK(tab); | 165 DCHECK(tab); |
165 extension_bookmark_manager_event_router_.reset( | 166 extension_bookmark_manager_event_router_.reset( |
166 new ExtensionBookmarkManagerEventRouter(GetProfile(), tab)); | 167 new ExtensionBookmarkManagerEventRouter(profile, tab)); |
167 | 168 |
168 link_transition_type_ = PageTransition::AUTO_BOOKMARK; | 169 link_transition_type_ = PageTransition::AUTO_BOOKMARK; |
169 } | 170 } |
170 } | 171 } |
171 | 172 |
172 ExtensionWebUI::~ExtensionWebUI() {} | 173 ExtensionWebUI::~ExtensionWebUI() {} |
173 | 174 |
174 ExtensionBookmarkManagerEventRouter* | 175 ExtensionBookmarkManagerEventRouter* |
175 ExtensionWebUI::extension_bookmark_manager_event_router() { | 176 ExtensionWebUI::extension_bookmark_manager_event_router() { |
176 return extension_bookmark_manager_event_router_.get(); | 177 return extension_bookmark_manager_event_router_.get(); |
177 } | 178 } |
178 | 179 |
179 //////////////////////////////////////////////////////////////////////////////// | 180 //////////////////////////////////////////////////////////////////////////////// |
180 // chrome:// URL overrides | 181 // chrome:// URL overrides |
181 | 182 |
182 // static | 183 // static |
183 void ExtensionWebUI::RegisterUserPrefs(PrefService* prefs) { | 184 void ExtensionWebUI::RegisterUserPrefs(PrefService* prefs) { |
184 prefs->RegisterDictionaryPref(kExtensionURLOverrides, | 185 prefs->RegisterDictionaryPref(kExtensionURLOverrides, |
185 PrefService::UNSYNCABLE_PREF); | 186 PrefService::UNSYNCABLE_PREF); |
186 } | 187 } |
187 | 188 |
188 // static | 189 // static |
189 bool ExtensionWebUI::HandleChromeURLOverride(GURL* url, Profile* profile) { | 190 bool ExtensionWebUI::HandleChromeURLOverride(GURL* url, |
| 191 content::BrowserContext* context) { |
190 if (!url->SchemeIs(chrome::kChromeUIScheme)) | 192 if (!url->SchemeIs(chrome::kChromeUIScheme)) |
191 return false; | 193 return false; |
192 | 194 |
| 195 Profile* profile = static_cast<Profile*>(context); |
193 const DictionaryValue* overrides = | 196 const DictionaryValue* overrides = |
194 profile->GetPrefs()->GetDictionary(kExtensionURLOverrides); | 197 profile->GetPrefs()->GetDictionary(kExtensionURLOverrides); |
195 std::string page = url->host(); | 198 std::string page = url->host(); |
196 ListValue* url_list; | 199 ListValue* url_list; |
197 if (!overrides || !overrides->GetList(page, &url_list)) | 200 if (!overrides || !overrides->GetList(page, &url_list)) |
198 return false; | 201 return false; |
199 | 202 |
200 ExtensionService* service = profile->GetExtensionService(); | 203 ExtensionService* service = profile->GetExtensionService(); |
201 | 204 |
202 size_t i = 0; | 205 size_t i = 0; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 continue; | 245 continue; |
243 } | 246 } |
244 | 247 |
245 *url = extension_url; | 248 *url = extension_url; |
246 return true; | 249 return true; |
247 } | 250 } |
248 return false; | 251 return false; |
249 } | 252 } |
250 | 253 |
251 // static | 254 // static |
252 bool ExtensionWebUI::HandleChromeURLOverrideReverse(GURL* url, | 255 bool ExtensionWebUI::HandleChromeURLOverrideReverse( |
253 Profile* profile) { | 256 GURL* url, content::BrowserContext* context) { |
| 257 Profile* profile = static_cast<Profile*>(context); |
254 const DictionaryValue* overrides = | 258 const DictionaryValue* overrides = |
255 profile->GetPrefs()->GetDictionary(kExtensionURLOverrides); | 259 profile->GetPrefs()->GetDictionary(kExtensionURLOverrides); |
256 if (!overrides) | 260 if (!overrides) |
257 return false; | 261 return false; |
258 | 262 |
259 // Find the reverse mapping based on the given URL. For example this maps the | 263 // Find the reverse mapping based on the given URL. For example this maps the |
260 // internal URL chrome-extension://eemcgdkndhakfknomggombfjeno/main.html#1 to | 264 // internal URL chrome-extension://eemcgdkndhakfknomggombfjeno/main.html#1 to |
261 // chrome://bookmarks/#1 for display in the omnibox. | 265 // chrome://bookmarks/#1 for display in the omnibox. |
262 for (DictionaryValue::key_iterator it = overrides->begin_keys(), | 266 for (DictionaryValue::key_iterator it = overrides->begin_keys(), |
263 end = overrides->end_keys(); it != end; ++it) { | 267 end = overrides->end_keys(); it != end; ++it) { |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 | 331 |
328 // static | 332 // static |
329 void ExtensionWebUI::UnregisterAndReplaceOverride(const std::string& page, | 333 void ExtensionWebUI::UnregisterAndReplaceOverride(const std::string& page, |
330 Profile* profile, ListValue* list, Value* override) { | 334 Profile* profile, ListValue* list, Value* override) { |
331 int index = list->Remove(*override); | 335 int index = list->Remove(*override); |
332 if (index == 0) { | 336 if (index == 0) { |
333 // This is the active override, so we need to find all existing | 337 // This is the active override, so we need to find all existing |
334 // tabs for this override and get them to reload the original URL. | 338 // tabs for this override and get them to reload the original URL. |
335 for (TabContentsIterator iterator; !iterator.done(); ++iterator) { | 339 for (TabContentsIterator iterator; !iterator.done(); ++iterator) { |
336 TabContents* tab = (*iterator)->tab_contents(); | 340 TabContents* tab = (*iterator)->tab_contents(); |
337 if (tab->profile() != profile) | 341 Profile* tab_profile = static_cast<Profile*>(tab->context()); |
| 342 if (tab_profile != profile) |
338 continue; | 343 continue; |
339 | 344 |
340 GURL url = tab->GetURL(); | 345 GURL url = tab->GetURL(); |
341 if (!url.SchemeIs(chrome::kChromeUIScheme) || url.host() != page) | 346 if (!url.SchemeIs(chrome::kChromeUIScheme) || url.host() != page) |
342 continue; | 347 continue; |
343 | 348 |
344 // Don't use Reload() since |url| isn't the same as the internal URL | 349 // Don't use Reload() since |url| isn't the same as the internal URL |
345 // that NavigationController has. | 350 // that NavigationController has. |
346 tab->controller().LoadURL(url, url, PageTransition::RELOAD); | 351 tab->controller().LoadURL(url, url, PageTransition::RELOAD); |
347 } | 352 } |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 } | 396 } |
392 | 397 |
393 // static | 398 // static |
394 void ExtensionWebUI::GetFaviconForURL(Profile* profile, | 399 void ExtensionWebUI::GetFaviconForURL(Profile* profile, |
395 FaviconService::GetFaviconRequest* request, const GURL& page_url) { | 400 FaviconService::GetFaviconRequest* request, const GURL& page_url) { |
396 // tracker deletes itself when done. | 401 // tracker deletes itself when done. |
397 ExtensionWebUIImageLoadingTracker* tracker = | 402 ExtensionWebUIImageLoadingTracker* tracker = |
398 new ExtensionWebUIImageLoadingTracker(profile, request, page_url); | 403 new ExtensionWebUIImageLoadingTracker(profile, request, page_url); |
399 tracker->Init(); | 404 tracker->Init(); |
400 } | 405 } |
OLD | NEW |