OLD | NEW |
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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 using content::BrowserThread; | 158 using content::BrowserThread; |
159 using content::BrowserURLHandler; | 159 using content::BrowserURLHandler; |
160 using content::ChildProcessSecurityPolicy; | 160 using content::ChildProcessSecurityPolicy; |
161 using content::FileDescriptorInfo; | 161 using content::FileDescriptorInfo; |
162 using content::QuotaPermissionContext; | 162 using content::QuotaPermissionContext; |
163 using content::RenderViewHost; | 163 using content::RenderViewHost; |
164 using content::SiteInstance; | 164 using content::SiteInstance; |
165 using content::WebContents; | 165 using content::WebContents; |
166 using extensions::APIPermission; | 166 using extensions::APIPermission; |
167 using extensions::Extension; | 167 using extensions::Extension; |
| 168 using extensions::Manifest; |
168 using webkit_glue::WebPreferences; | 169 using webkit_glue::WebPreferences; |
169 | 170 |
170 namespace { | 171 namespace { |
171 | 172 |
172 const char* kPredefinedAllowedSocketOrigins[] = { | 173 const char* kPredefinedAllowedSocketOrigins[] = { |
173 "okddffdblfhhnmhodogpojmfkjmhinfp", // Test SSH Client | 174 "okddffdblfhhnmhodogpojmfkjmhinfp", // Test SSH Client |
174 "pnhechapfaindjhompbnflcldabbghjo", // HTerm App (SSH Client) | 175 "pnhechapfaindjhompbnflcldabbghjo", // HTerm App (SSH Client) |
175 "bglhmjfplikpjnfoegeomebmfnkjomhe", // see crbug.com/122126 | 176 "bglhmjfplikpjnfoegeomebmfnkjomhe", // see crbug.com/122126 |
176 "gbchcmhmhahfdphkhkmpfmihenigjmpp", // Chrome Remote Desktop | 177 "gbchcmhmhahfdphkhkmpfmihenigjmpp", // Chrome Remote Desktop |
177 "kgngmbheleoaphbjbaiobfdepmghbfah", // Pre-release Chrome Remote Desktop | 178 "kgngmbheleoaphbjbaiobfdepmghbfah", // Pre-release Chrome Remote Desktop |
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
788 | 789 |
789 const Extension* extension = extension_service->extensions()-> | 790 const Extension* extension = extension_service->extensions()-> |
790 GetExtensionOrAppByURL(ExtensionURLInfo(effective_url)); | 791 GetExtensionOrAppByURL(ExtensionURLInfo(effective_url)); |
791 if (!extension) | 792 if (!extension) |
792 return false; | 793 return false; |
793 | 794 |
794 // If the URL is part of a hosted app that does not have the background | 795 // If the URL is part of a hosted app that does not have the background |
795 // permission, or that does not allow JavaScript access to the background | 796 // permission, or that does not allow JavaScript access to the background |
796 // page, we want to give each instance its own process to improve | 797 // page, we want to give each instance its own process to improve |
797 // responsiveness. | 798 // responsiveness. |
798 if (extension->GetType() == Extension::TYPE_HOSTED_APP) { | 799 if (extension->GetType() == Manifest::TYPE_HOSTED_APP) { |
799 if (!extension->HasAPIPermission(APIPermission::kBackground) || | 800 if (!extension->HasAPIPermission(APIPermission::kBackground) || |
800 !extension->allow_background_js_access()) { | 801 !extension->allow_background_js_access()) { |
801 return false; | 802 return false; |
802 } | 803 } |
803 } | 804 } |
804 | 805 |
805 // Hosted apps that have script access to their background page must use | 806 // Hosted apps that have script access to their background page must use |
806 // process per site, since all instances can make synchronous calls to the | 807 // process per site, since all instances can make synchronous calls to the |
807 // background window. Other extensions should use process per site as well. | 808 // background window. Other extensions should use process per site as well. |
808 return true; | 809 return true; |
(...skipping 1103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1912 } | 1913 } |
1913 | 1914 |
1914 // Need to check this now and not on construction because otherwise it won't | 1915 // Need to check this now and not on construction because otherwise it won't |
1915 // work with browser_tests. | 1916 // work with browser_tests. |
1916 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 1917 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
1917 std::string allowed_list = | 1918 std::string allowed_list = |
1918 command_line.GetSwitchValueASCII(switches::kAllowNaClSocketAPI); | 1919 command_line.GetSwitchValueASCII(switches::kAllowNaClSocketAPI); |
1919 if (allowed_list == "*") { | 1920 if (allowed_list == "*") { |
1920 // The wildcard allows socket API only for packaged and platform apps. | 1921 // The wildcard allows socket API only for packaged and platform apps. |
1921 return extension && | 1922 return extension && |
1922 (extension->GetType() == Extension::TYPE_LEGACY_PACKAGED_APP || | 1923 (extension->GetType() == Manifest::TYPE_LEGACY_PACKAGED_APP || |
1923 extension->GetType() == Extension::TYPE_PLATFORM_APP); | 1924 extension->GetType() == Manifest::TYPE_PLATFORM_APP); |
1924 } else if (!allowed_list.empty()) { | 1925 } else if (!allowed_list.empty()) { |
1925 StringTokenizer t(allowed_list, ","); | 1926 StringTokenizer t(allowed_list, ","); |
1926 while (t.GetNext()) { | 1927 while (t.GetNext()) { |
1927 if (t.token() == host) | 1928 if (t.token() == host) |
1928 return true; | 1929 return true; |
1929 } | 1930 } |
1930 } | 1931 } |
1931 | 1932 |
1932 if (!extension) | 1933 if (!extension) |
1933 return false; | 1934 return false; |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2045 io_thread_application_locale_ = locale; | 2046 io_thread_application_locale_ = locale; |
2046 } | 2047 } |
2047 | 2048 |
2048 void ChromeContentBrowserClient::SetApplicationLocaleOnIOThread( | 2049 void ChromeContentBrowserClient::SetApplicationLocaleOnIOThread( |
2049 const std::string& locale) { | 2050 const std::string& locale) { |
2050 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 2051 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
2051 io_thread_application_locale_ = locale; | 2052 io_thread_application_locale_ = locale; |
2052 } | 2053 } |
2053 | 2054 |
2054 } // namespace chrome | 2055 } // namespace chrome |
OLD | NEW |