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

Side by Side Diff: chrome/browser/extensions/extension_service.cc

Issue 8827013: Move/replace/rename URL-based extension getters from ExtensionService to/in ExtensionSet. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: id Created 9 years 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) 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_service.h" 5 #include "chrome/browser/extensions/extension_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 251
252 // If a download url matches one of these patterns and has a referrer of the 252 // If a download url matches one of these patterns and has a referrer of the
253 // webstore, then we're willing to treat that as a gallery download. 253 // webstore, then we're willing to treat that as a gallery download.
254 static const char* kAllowedDownloadURLPatterns[] = { 254 static const char* kAllowedDownloadURLPatterns[] = {
255 "https://clients2.google.com/service/update2*", 255 "https://clients2.google.com/service/update2*",
256 "https://clients2.googleusercontent.com/crx/*" 256 "https://clients2.googleusercontent.com/crx/*"
257 }; 257 };
258 258
259 bool ExtensionService::IsDownloadFromGallery(const GURL& download_url, 259 bool ExtensionService::IsDownloadFromGallery(const GURL& download_url,
260 const GURL& referrer_url) { 260 const GURL& referrer_url) {
261 const Extension* download_extension = GetExtensionByWebExtent(download_url); 261 const Extension* download_extension =
262 const Extension* referrer_extension = GetExtensionByWebExtent(referrer_url); 262 extensions_.GetHostedAppByURL(ExtensionURLInfo(download_url));
263 const Extension* referrer_extension =
264 extensions_.GetHostedAppByURL(ExtensionURLInfo(referrer_url));
263 const Extension* webstore_app = GetWebStoreApp(); 265 const Extension* webstore_app = GetWebStoreApp();
264 266
265 bool referrer_valid = (referrer_extension == webstore_app); 267 bool referrer_valid = (referrer_extension == webstore_app);
266 bool download_valid = (download_extension == webstore_app); 268 bool download_valid = (download_extension == webstore_app);
267 269
268 // We also allow the download to be from a small set of trusted paths. 270 // We also allow the download to be from a small set of trusted paths.
269 if (!download_valid) { 271 if (!download_valid) {
270 for (size_t i = 0; i < arraysize(kAllowedDownloadURLPatterns); i++) { 272 for (size_t i = 0; i < arraysize(kAllowedDownloadURLPatterns); i++) {
271 URLPattern pattern(URLPattern::SCHEME_HTTPS, 273 URLPattern pattern(URLPattern::SCHEME_HTTPS,
272 kAllowedDownloadURLPatterns[i]); 274 kAllowedDownloadURLPatterns[i]);
(...skipping 30 matching lines...) Expand all
303 305
304 // Otherwise, the TLD must match the TLD of the command-line url. 306 // Otherwise, the TLD must match the TLD of the command-line url.
305 download_valid = (download_tld == store_tld); 307 download_valid = (download_tld == store_tld);
306 } 308 }
307 } 309 }
308 310
309 return (referrer_valid && download_valid); 311 return (referrer_valid && download_valid);
310 } 312 }
311 313
312 const Extension* ExtensionService::GetInstalledApp(const GURL& url) { 314 const Extension* ExtensionService::GetInstalledApp(const GURL& url) {
313 // Check for hosted app. 315 const Extension* extension = extensions_.GetExtensionOrAppByURL(
314 const Extension* app = GetExtensionByWebExtent(url); 316 ExtensionURLInfo(url));
315 if (app) 317 if (extension && extension->is_app())
316 return app; 318 return extension;
317
318 // Check for packaged app.
319 app = GetExtensionByURL(url);
320 if (app && app->is_app())
321 return app;
322 319
323 return NULL; 320 return NULL;
324 } 321 }
325 322
326 bool ExtensionService::IsInstalledApp(const GURL& url) { 323 bool ExtensionService::IsInstalledApp(const GURL& url) {
327 return !!GetInstalledApp(url); 324 return !!GetInstalledApp(url);
328 } 325 }
329 326
330 void ExtensionService::SetInstalledAppForRenderer(int renderer_child_id, 327 void ExtensionService::SetInstalledAppForRenderer(int renderer_child_id,
331 const Extension* app) { 328 const Extension* app) {
(...skipping 1835 matching lines...) Expand 10 before | Expand all | Expand 10 after
2167 2164
2168 const Extension* ExtensionService::GetInstalledExtension( 2165 const Extension* ExtensionService::GetInstalledExtension(
2169 const std::string& id) const { 2166 const std::string& id) const {
2170 return GetExtensionByIdInternal(id, true, true, true); 2167 return GetExtensionByIdInternal(id, true, true, true);
2171 } 2168 }
2172 2169
2173 const Extension* ExtensionService::GetWebStoreApp() { 2170 const Extension* ExtensionService::GetWebStoreApp() {
2174 return GetExtensionById(extension_misc::kWebStoreAppId, false); 2171 return GetExtensionById(extension_misc::kWebStoreAppId, false);
2175 } 2172 }
2176 2173
2177 const Extension* ExtensionService::GetExtensionByURL(const GURL& url) {
2178 return url.scheme() != chrome::kExtensionScheme ? NULL :
2179 GetExtensionById(url.host(), false);
2180 }
2181
2182 const Extension* ExtensionService::GetExtensionByWebExtent(const GURL& url) {
2183 // TODO(yoz): Should be ExtensionSet::GetByURL.
2184 for (ExtensionSet::const_iterator iter = extensions_.begin();
2185 iter != extensions_.end(); ++iter) {
2186 if ((*iter)->web_extent().MatchesURL(url))
2187 return *iter;
2188 }
2189 return NULL;
2190 }
2191
2192 const Extension* ExtensionService::GetDisabledExtensionByWebExtent(
2193 const GURL& url) {
2194 // TODO(yoz): Should be ExtensionSet::GetByURL.
2195 for (ExtensionSet::const_iterator iter = disabled_extensions_.begin();
2196 iter != disabled_extensions_.end(); ++iter) {
2197 if ((*iter)->web_extent().MatchesURL(url))
2198 return *iter;
2199 }
2200 return NULL;
2201 }
2202
2203 bool ExtensionService::ExtensionBindingsAllowed(const GURL& url) { 2174 bool ExtensionService::ExtensionBindingsAllowed(const GURL& url) {
2204 // Allow bindings for all packaged extensions. 2175 // Allow bindings for all packaged extensions and component hosted apps.
2205 // Note that GetExtensionByURL may return an Extension for hosted apps 2176 const Extension* extension = extensions_.GetExtensionOrAppByURL(
2206 // (excluding bookmark apps) if the URL came from GetEffectiveURL. 2177 ExtensionURLInfo(url));
2207 const Extension* extension = GetExtensionByURL(url); 2178 return extension && (!extension->is_hosted_app() ||
2208 if (extension && extension->GetType() != Extension::TYPE_HOSTED_APP) 2179 extension->location() == Extension::COMPONENT);
2209 return true;
2210
2211 // Allow bindings for all component, hosted apps.
2212 if (!extension)
2213 extension = GetExtensionByWebExtent(url);
2214 return (extension && extension->location() == Extension::COMPONENT);
2215 }
2216
2217 const Extension* ExtensionService::GetExtensionByOverlappingWebExtent(
2218 const URLPatternSet& extent) {
2219 // TODO(yoz): Should be in ExtensionSet.
2220 for (ExtensionSet::const_iterator iter = extensions_.begin();
2221 iter != extensions_.end(); ++iter) {
2222 if ((*iter)->web_extent().OverlapsWith(extent))
2223 return *iter;
2224 }
2225
2226 return NULL;
2227 } 2180 }
2228 2181
2229 const SkBitmap& ExtensionService::GetOmniboxIcon( 2182 const SkBitmap& ExtensionService::GetOmniboxIcon(
2230 const std::string& extension_id) { 2183 const std::string& extension_id) {
2231 return omnibox_icon_manager_.GetIcon(extension_id); 2184 return omnibox_icon_manager_.GetIcon(extension_id);
2232 } 2185 }
2233 2186
2234 const SkBitmap& ExtensionService::GetOmniboxPopupIcon( 2187 const SkBitmap& ExtensionService::GetOmniboxPopupIcon(
2235 const std::string& extension_id) { 2188 const std::string& extension_id) {
2236 return omnibox_popup_icon_manager_.GetIcon(extension_id); 2189 return omnibox_popup_icon_manager_.GetIcon(extension_id);
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
2580 const ExtensionResource &resource, 2533 const ExtensionResource &resource,
2581 int index) { 2534 int index) {
2582 // If the image failed to load (e.g. if the resource being loaded was empty) 2535 // If the image failed to load (e.g. if the resource being loaded was empty)
2583 // use the standard application icon. 2536 // use the standard application icon.
2584 if (!image || image->isNull()) 2537 if (!image || image->isNull())
2585 image = ExtensionIconSource::LoadImageByResourceId(IDR_APP_DEFAULT_ICON); 2538 image = ExtensionIconSource::LoadImageByResourceId(IDR_APP_DEFAULT_ICON);
2586 2539
2587 shortcut_info_.favicon = *image; 2540 shortcut_info_.favicon = *image;
2588 web_app::CreateShortcut(profile_->GetPath(), shortcut_info_); 2541 web_app::CreateShortcut(profile_->GetPath(), shortcut_info_);
2589 } 2542 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.h ('k') | chrome/browser/extensions/extension_web_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698