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

Side by Side Diff: chrome/browser/chrome_content_browser_client.cc

Issue 12253022: Manifest handler for all keys background-related. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/chrome_content_browser_client.h" 5 #include "chrome/browser/chrome_content_browser_client.h"
6 6
7 #include <set> 7 #include <set>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 #include "chrome/browser/ui/chrome_select_file_policy.h" 75 #include "chrome/browser/ui/chrome_select_file_policy.h"
76 #include "chrome/browser/ui/tab_contents/chrome_web_contents_view_delegate.h" 76 #include "chrome/browser/ui/tab_contents/chrome_web_contents_view_delegate.h"
77 #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" 77 #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h"
78 #include "chrome/browser/user_style_sheet_watcher.h" 78 #include "chrome/browser/user_style_sheet_watcher.h"
79 #include "chrome/browser/user_style_sheet_watcher_factory.h" 79 #include "chrome/browser/user_style_sheet_watcher_factory.h"
80 #include "chrome/browser/view_type_utils.h" 80 #include "chrome/browser/view_type_utils.h"
81 #include "chrome/common/child_process_logging.h" 81 #include "chrome/common/child_process_logging.h"
82 #include "chrome/common/chrome_constants.h" 82 #include "chrome/common/chrome_constants.h"
83 #include "chrome/common/chrome_paths.h" 83 #include "chrome/common/chrome_paths.h"
84 #include "chrome/common/chrome_switches.h" 84 #include "chrome/common/chrome_switches.h"
85 #include "chrome/common/extensions/background_info.h"
85 #include "chrome/common/extensions/extension.h" 86 #include "chrome/common/extensions/extension.h"
86 #include "chrome/common/extensions/extension_process_policy.h" 87 #include "chrome/common/extensions/extension_process_policy.h"
87 #include "chrome/common/extensions/extension_set.h" 88 #include "chrome/common/extensions/extension_set.h"
88 #include "chrome/common/extensions/permissions/socket_permission.h" 89 #include "chrome/common/extensions/permissions/socket_permission.h"
89 #include "chrome/common/logging_chrome.h" 90 #include "chrome/common/logging_chrome.h"
90 #include "chrome/common/pref_names.h" 91 #include "chrome/common/pref_names.h"
91 #include "chrome/common/render_messages.h" 92 #include "chrome/common/render_messages.h"
92 #include "chrome/common/url_constants.h" 93 #include "chrome/common/url_constants.h"
93 #include "content/public/browser/browser_child_process_host.h" 94 #include "content/public/browser/browser_child_process_host.h"
94 #include "content/public/browser/browser_main_parts.h" 95 #include "content/public/browser/browser_main_parts.h"
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 GetExtensionOrAppByURL(ExtensionURLInfo(effective_url)); 783 GetExtensionOrAppByURL(ExtensionURLInfo(effective_url));
783 if (!extension) 784 if (!extension)
784 return false; 785 return false;
785 786
786 // If the URL is part of a hosted app that does not have the background 787 // If the URL is part of a hosted app that does not have the background
787 // permission, or that does not allow JavaScript access to the background 788 // permission, or that does not allow JavaScript access to the background
788 // page, we want to give each instance its own process to improve 789 // page, we want to give each instance its own process to improve
789 // responsiveness. 790 // responsiveness.
790 if (extension->GetType() == Manifest::TYPE_HOSTED_APP) { 791 if (extension->GetType() == Manifest::TYPE_HOSTED_APP) {
791 if (!extension->HasAPIPermission(APIPermission::kBackground) || 792 if (!extension->HasAPIPermission(APIPermission::kBackground) ||
792 !extension->allow_background_js_access()) { 793 !extensions::BackgroundInfo::AllowJSAccess(extension)) {
793 return false; 794 return false;
794 } 795 }
795 } 796 }
796 797
797 // Hosted apps that have script access to their background page must use 798 // Hosted apps that have script access to their background page must use
798 // process per site, since all instances can make synchronous calls to the 799 // process per site, since all instances can make synchronous calls to the
799 // background window. Other extensions should use process per site as well. 800 // background window. Other extensions should use process per site as well.
800 return true; 801 return true;
801 } 802 }
802 803
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 ExtensionService* service = !profile ? NULL : 907 ExtensionService* service = !profile ? NULL :
907 extensions::ExtensionSystem::Get(profile)->extension_service(); 908 extensions::ExtensionSystem::Get(profile)->extension_service();
908 if (!service) 909 if (!service)
909 return false; 910 return false;
910 911
911 // We have to have a valid extension with background page to proceed. 912 // We have to have a valid extension with background page to proceed.
912 const Extension* extension = 913 const Extension* extension =
913 service->extensions()->GetExtensionOrAppByURL(ExtensionURLInfo(url)); 914 service->extensions()->GetExtensionOrAppByURL(ExtensionURLInfo(url));
914 if (!extension) 915 if (!extension)
915 return false; 916 return false;
916 if (!extension->has_background_page()) 917 if (!extensions::BackgroundInfo::HasBackgroundPage(extension))
917 return false; 918 return false;
918 919
919 std::set<int> process_ids; 920 std::set<int> process_ids;
920 size_t max_process_count = 921 size_t max_process_count =
921 content::RenderProcessHost::GetMaxRendererProcessCount(); 922 content::RenderProcessHost::GetMaxRendererProcessCount();
922 923
923 // Go through all profiles to ensure we have total count of extension 924 // Go through all profiles to ensure we have total count of extension
924 // processes containing background pages, otherwise one profile can 925 // processes containing background pages, otherwise one profile can
925 // starve the other. 926 // starve the other.
926 std::vector<Profile*> profiles = g_browser_process->profile_manager()-> 927 std::vector<Profile*> profiles = g_browser_process->profile_manager()->
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after
1632 } 1633 }
1633 1634
1634 // Note: this use of GetExtensionOrAppByURL is safe but imperfect. It may 1635 // Note: this use of GetExtensionOrAppByURL is safe but imperfect. It may
1635 // return a recently installed Extension even if this CanCreateWindow call 1636 // return a recently installed Extension even if this CanCreateWindow call
1636 // was made by an old copy of the page in a normal web process. That's ok, 1637 // was made by an old copy of the page in a normal web process. That's ok,
1637 // because the permission check above would have caused an early return 1638 // because the permission check above would have caused an early return
1638 // already. We must use the full URL to find hosted apps, though, and not 1639 // already. We must use the full URL to find hosted apps, though, and not
1639 // just the origin. 1640 // just the origin.
1640 const Extension* extension = map->extensions().GetExtensionOrAppByURL( 1641 const Extension* extension = map->extensions().GetExtensionOrAppByURL(
1641 ExtensionURLInfo(opener_url)); 1642 ExtensionURLInfo(opener_url));
1642 if (extension && !extension->allow_background_js_access()) 1643 if (extension && !extensions::BackgroundInfo::AllowJSAccess(extension))
1643 *no_javascript_access = true; 1644 *no_javascript_access = true;
1644 } 1645 }
1645 return true; 1646 return true;
1646 } 1647 }
1647 1648
1648 std::string ChromeContentBrowserClient::GetWorkerProcessTitle( 1649 std::string ChromeContentBrowserClient::GetWorkerProcessTitle(
1649 const GURL& url, content::ResourceContext* context) { 1650 const GURL& url, content::ResourceContext* context) {
1650 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 1651 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
1651 // Check if it's an extension-created worker, in which case we want to use 1652 // Check if it's an extension-created worker, in which case we want to use
1652 // the name of the extension. 1653 // the name of the extension.
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
2089 io_thread_application_locale_ = locale; 2090 io_thread_application_locale_ = locale;
2090 } 2091 }
2091 2092
2092 void ChromeContentBrowserClient::SetApplicationLocaleOnIOThread( 2093 void ChromeContentBrowserClient::SetApplicationLocaleOnIOThread(
2093 const std::string& locale) { 2094 const std::string& locale) {
2094 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 2095 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
2095 io_thread_application_locale_ = locale; 2096 io_thread_application_locale_ = locale;
2096 } 2097 }
2097 2098
2098 } // namespace chrome 2099 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698