OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/browser_init.h" | 5 #include "chrome/browser/browser_init.h" |
6 | 6 |
7 #include <algorithm> // For max(). | 7 #include <algorithm> // For max(). |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
11 #include "base/environment.h" | 11 #include "base/environment.h" |
12 #include "base/event_recorder.h" | 12 #include "base/event_recorder.h" |
13 #include "base/file_path.h" | 13 #include "base/file_path.h" |
14 #include "base/metrics/histogram.h" | 14 #include "base/metrics/histogram.h" |
15 #include "base/path_service.h" | 15 #include "base/path_service.h" |
16 #include "base/scoped_ptr.h" | 16 #include "base/scoped_ptr.h" |
17 #include "base/string_number_conversions.h" | 17 #include "base/string_number_conversions.h" |
| 18 #include "base/thread_restrictions.h" |
18 #include "base/utf_string_conversions.h" | 19 #include "base/utf_string_conversions.h" |
19 #include "chrome/browser/automation/automation_provider.h" | 20 #include "chrome/browser/automation/automation_provider.h" |
20 #include "chrome/browser/automation/automation_provider_list.h" | 21 #include "chrome/browser/automation/automation_provider_list.h" |
21 #include "chrome/browser/automation/chrome_frame_automation_provider.h" | 22 #include "chrome/browser/automation/chrome_frame_automation_provider.h" |
22 #include "chrome/browser/automation/testing_automation_provider.h" | 23 #include "chrome/browser/automation/testing_automation_provider.h" |
23 #include "chrome/browser/browser_list.h" | 24 #include "chrome/browser/browser_list.h" |
24 #include "chrome/browser/browser_process.h" | 25 #include "chrome/browser/browser_process.h" |
25 #include "chrome/browser/browser_thread.h" | 26 #include "chrome/browser/browser_thread.h" |
26 #include "chrome/browser/browser_window.h" | 27 #include "chrome/browser/browser_window.h" |
27 #include "chrome/browser/child_process_security_policy.h" | 28 #include "chrome/browser/child_process_security_policy.h" |
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
844 continue; | 845 continue; |
845 } | 846 } |
846 const TemplateURLRef* search_url = default_provider->url(); | 847 const TemplateURLRef* search_url = default_provider->url(); |
847 DCHECK(search_url->SupportsReplacement()); | 848 DCHECK(search_url->SupportsReplacement()); |
848 std::wstring search_term = param.ToWStringHack().substr(2); | 849 std::wstring search_term = param.ToWStringHack().substr(2); |
849 urls.push_back(GURL(search_url->ReplaceSearchTerms( | 850 urls.push_back(GURL(search_url->ReplaceSearchTerms( |
850 *default_provider, search_term, | 851 *default_provider, search_term, |
851 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, std::wstring()))); | 852 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, std::wstring()))); |
852 } else { | 853 } else { |
853 // This will create a file URL or a regular URL. | 854 // This will create a file URL or a regular URL. |
854 GURL url(URLFixerUpper::FixupRelativeFile(cur_dir_, param)); | 855 // This call can (in rare circumstances) block the UI thread. |
| 856 // Allow it until this bug is fixed. |
| 857 // http://code.google.com/p/chromium/issues/detail?id=60641 |
| 858 GURL url; |
| 859 { |
| 860 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 861 url = URLFixerUpper::FixupRelativeFile(cur_dir_, param); |
| 862 } |
855 // Exclude dangerous schemes. | 863 // Exclude dangerous schemes. |
856 if (url.is_valid()) { | 864 if (url.is_valid()) { |
857 ChildProcessSecurityPolicy *policy = | 865 ChildProcessSecurityPolicy *policy = |
858 ChildProcessSecurityPolicy::GetInstance(); | 866 ChildProcessSecurityPolicy::GetInstance(); |
859 if (policy->IsWebSafeScheme(url.scheme()) || | 867 if (policy->IsWebSafeScheme(url.scheme()) || |
860 url.SchemeIs(chrome::kFileScheme) || | 868 url.SchemeIs(chrome::kFileScheme) || |
861 !url.spec().compare(chrome::kAboutBlankURL)) { | 869 !url.spec().compare(chrome::kAboutBlankURL)) { |
862 urls.push_back(url); | 870 urls.push_back(url); |
863 } | 871 } |
864 } | 872 } |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1014 scoped_refptr<AutomationProviderClass> automation = | 1022 scoped_refptr<AutomationProviderClass> automation = |
1015 new AutomationProviderClass(profile); | 1023 new AutomationProviderClass(profile); |
1016 automation->ConnectToChannel(channel_id); | 1024 automation->ConnectToChannel(channel_id); |
1017 automation->SetExpectedTabCount(expected_tabs); | 1025 automation->SetExpectedTabCount(expected_tabs); |
1018 | 1026 |
1019 AutomationProviderList* list = | 1027 AutomationProviderList* list = |
1020 g_browser_process->InitAutomationProviderList(); | 1028 g_browser_process->InitAutomationProviderList(); |
1021 DCHECK(list); | 1029 DCHECK(list); |
1022 list->AddProvider(automation); | 1030 list->AddProvider(automation); |
1023 } | 1031 } |
OLD | NEW |