OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/net/chrome_url_request_context.h" | 5 #include "chrome/browser/net/chrome_url_request_context.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
10 #include "chrome/browser/privacy_blacklist/blacklist.h" | 10 #include "chrome/browser/privacy_blacklist/blacklist.h" |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 const CommandLine& command_line) { | 111 const CommandLine& command_line) { |
112 // The linux gconf-based proxy settings getter relies on being initialized | 112 // The linux gconf-based proxy settings getter relies on being initialized |
113 // from the UI thread. | 113 // from the UI thread. |
114 CheckCurrentlyOnMainThread(); | 114 CheckCurrentlyOnMainThread(); |
115 | 115 |
116 scoped_ptr<net::ProxyConfig> proxy_config_from_cmd_line( | 116 scoped_ptr<net::ProxyConfig> proxy_config_from_cmd_line( |
117 CreateProxyConfig(command_line)); | 117 CreateProxyConfig(command_line)); |
118 | 118 |
119 if (!proxy_config_from_cmd_line.get()) { | 119 if (!proxy_config_from_cmd_line.get()) { |
120 // Use system settings. | 120 // Use system settings. |
| 121 // TODO(port): the IO and FILE message loops are only used by Linux. Can |
| 122 // that code be moved to chrome/browser instead of being in net, so that it |
| 123 // can use ChromeThread instead of raw MessageLoop pointers? See bug 25354. |
121 return net::ProxyService::CreateSystemProxyConfigService( | 124 return net::ProxyService::CreateSystemProxyConfigService( |
122 g_browser_process->io_thread()->message_loop(), | 125 g_browser_process->io_thread()->message_loop(), |
123 g_browser_process->file_thread()->message_loop()); | 126 g_browser_process->file_thread()->message_loop()); |
124 } | 127 } |
125 | 128 |
126 // Otherwise use the fixed settings from the command line. | 129 // Otherwise use the fixed settings from the command line. |
127 return new net::ProxyConfigServiceFixed(*proxy_config_from_cmd_line.get()); | 130 return new net::ProxyConfigServiceFixed(*proxy_config_from_cmd_line.get()); |
128 } | 131 } |
129 | 132 |
130 // Create a proxy service according to the options on command line. | 133 // Create a proxy service according to the options on command line. |
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
660 const NotificationDetails& details) { | 663 const NotificationDetails& details) { |
661 CheckCurrentlyOnMainThread(); | 664 CheckCurrentlyOnMainThread(); |
662 | 665 |
663 if (NotificationType::PREF_CHANGED == type) { | 666 if (NotificationType::PREF_CHANGED == type) { |
664 std::wstring* pref_name_in = Details<std::wstring>(details).ptr(); | 667 std::wstring* pref_name_in = Details<std::wstring>(details).ptr(); |
665 PrefService* prefs = Source<PrefService>(source).ptr(); | 668 PrefService* prefs = Source<PrefService>(source).ptr(); |
666 DCHECK(pref_name_in && prefs); | 669 DCHECK(pref_name_in && prefs); |
667 if (*pref_name_in == prefs::kAcceptLanguages) { | 670 if (*pref_name_in == prefs::kAcceptLanguages) { |
668 std::string accept_language = | 671 std::string accept_language = |
669 WideToASCII(prefs->GetString(prefs::kAcceptLanguages)); | 672 WideToASCII(prefs->GetString(prefs::kAcceptLanguages)); |
670 g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE, | 673 ChromeThread::PostTask( |
| 674 ChromeThread::IO, FROM_HERE, |
671 NewRunnableMethod( | 675 NewRunnableMethod( |
672 this, | 676 this, |
673 &ChromeURLRequestContextGetter::OnAcceptLanguageChange, | 677 &ChromeURLRequestContextGetter::OnAcceptLanguageChange, |
674 accept_language)); | 678 accept_language)); |
675 } else if (*pref_name_in == prefs::kCookieBehavior) { | 679 } else if (*pref_name_in == prefs::kCookieBehavior) { |
676 net::CookiePolicy::Type policy_type = net::CookiePolicy::FromInt( | 680 net::CookiePolicy::Type policy_type = net::CookiePolicy::FromInt( |
677 prefs_->GetInteger(prefs::kCookieBehavior)); | 681 prefs_->GetInteger(prefs::kCookieBehavior)); |
678 g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE, | 682 ChromeThread::PostTask( |
| 683 ChromeThread::IO, FROM_HERE, |
679 NewRunnableMethod( | 684 NewRunnableMethod( |
680 this, | 685 this, |
681 &ChromeURLRequestContextGetter::OnCookiePolicyChange, | 686 &ChromeURLRequestContextGetter::OnCookiePolicyChange, |
682 policy_type)); | 687 policy_type)); |
683 } else if (*pref_name_in == prefs::kDefaultCharset) { | 688 } else if (*pref_name_in == prefs::kDefaultCharset) { |
684 std::string default_charset = | 689 std::string default_charset = |
685 WideToASCII(prefs->GetString(prefs::kDefaultCharset)); | 690 WideToASCII(prefs->GetString(prefs::kDefaultCharset)); |
686 g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE, | 691 ChromeThread::PostTask( |
| 692 ChromeThread::IO, FROM_HERE, |
687 NewRunnableMethod( | 693 NewRunnableMethod( |
688 this, | 694 this, |
689 &ChromeURLRequestContextGetter::OnDefaultCharsetChange, | 695 &ChromeURLRequestContextGetter::OnDefaultCharsetChange, |
690 default_charset)); | 696 default_charset)); |
691 } | 697 } |
692 } else { | 698 } else { |
693 NOTREACHED(); | 699 NOTREACHED(); |
694 } | 700 } |
695 } | 701 } |
696 | 702 |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
862 if (ChromeThread::CurrentlyOn(ChromeThread::IO)) | 868 if (ChromeThread::CurrentlyOn(ChromeThread::IO)) |
863 return GetURLRequestContext()->cookie_store(); | 869 return GetURLRequestContext()->cookie_store(); |
864 | 870 |
865 // If we aren't running on the IO thread, we cannot call | 871 // If we aren't running on the IO thread, we cannot call |
866 // GetURLRequestContext(). Instead we will post a task to the IO loop | 872 // GetURLRequestContext(). Instead we will post a task to the IO loop |
867 // and wait for it to complete. | 873 // and wait for it to complete. |
868 | 874 |
869 base::WaitableEvent completion(false, false); | 875 base::WaitableEvent completion(false, false); |
870 net::CookieStore* result = NULL; | 876 net::CookieStore* result = NULL; |
871 | 877 |
872 g_browser_process->io_thread()->message_loop()->PostTask( | 878 ChromeThread::PostTask( |
873 FROM_HERE, | 879 ChromeThread::IO, FROM_HERE, |
874 NewRunnableMethod(this, | 880 NewRunnableMethod(this, |
875 &ChromeURLRequestContextGetter::GetCookieStoreAsyncHelper, | 881 &ChromeURLRequestContextGetter::GetCookieStoreAsyncHelper, |
876 &completion, | 882 &completion, |
877 &result)); | 883 &result)); |
878 | 884 |
879 completion.Wait(); | 885 completion.Wait(); |
880 DCHECK(result); | 886 DCHECK(result); |
881 return result; | 887 return result; |
882 } | 888 } |
883 | 889 |
884 void ChromeURLRequestContextGetter::GetCookieStoreAsyncHelper( | 890 void ChromeURLRequestContextGetter::GetCookieStoreAsyncHelper( |
885 base::WaitableEvent* completion, | 891 base::WaitableEvent* completion, |
886 net::CookieStore** result) { | 892 net::CookieStore** result) { |
887 // Note that CookieStore is refcounted, yet we do not add a reference. | 893 // Note that CookieStore is refcounted, yet we do not add a reference. |
888 *result = GetURLRequestContext()->cookie_store(); | 894 *result = GetURLRequestContext()->cookie_store(); |
889 completion->Signal(); | 895 completion->Signal(); |
890 } | 896 } |
OLD | NEW |