| 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/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/chrome_thread.h" | 10 #include "chrome/browser/chrome_thread.h" |
| 11 #include "chrome/browser/extensions/extensions_service.h" | 11 #include "chrome/browser/extensions/extensions_service.h" |
| 12 #include "chrome/browser/extensions/user_script_master.h" | 12 #include "chrome/browser/extensions/user_script_master.h" |
| 13 #include "chrome/browser/io_thread.h" | 13 #include "chrome/browser/io_thread.h" |
| 14 #include "chrome/browser/net/sqlite_persistent_cookie_store.h" | 14 #include "chrome/browser/net/sqlite_persistent_cookie_store.h" |
| 15 #include "chrome/browser/net/dns_global.h" | 15 #include "chrome/browser/net/dns_global.h" |
| 16 #include "chrome/browser/privacy_blacklist/blacklist.h" | 16 #include "chrome/browser/privacy_blacklist/blacklist.h" |
| 17 #include "chrome/browser/privacy_blacklist/blacklist_request_info.h" | 17 #include "chrome/browser/privacy_blacklist/blacklist_request_info.h" |
| 18 #include "chrome/browser/profile.h" | 18 #include "chrome/browser/profile.h" |
| 19 #include "chrome/common/chrome_constants.h" | 19 #include "chrome/common/chrome_constants.h" |
| 20 #include "chrome/common/chrome_switches.h" | 20 #include "chrome/common/chrome_switches.h" |
| 21 #include "chrome/common/extensions/extension.h" | 21 #include "chrome/common/extensions/extension.h" |
| 22 #include "chrome/common/notification_service.h" | 22 #include "chrome/common/notification_service.h" |
| 23 #include "chrome/common/pref_names.h" | 23 #include "chrome/common/pref_names.h" |
| 24 #include "chrome/common/url_constants.h" | 24 #include "chrome/common/url_constants.h" |
| 25 #include "net/base/static_cookie_policy.h" |
| 25 #include "net/ftp/ftp_network_layer.h" | 26 #include "net/ftp/ftp_network_layer.h" |
| 26 #include "net/http/http_cache.h" | 27 #include "net/http/http_cache.h" |
| 27 #include "net/http/http_network_layer.h" | 28 #include "net/http/http_network_layer.h" |
| 28 #include "net/http/http_util.h" | 29 #include "net/http/http_util.h" |
| 29 #include "net/proxy/proxy_config_service_fixed.h" | 30 #include "net/proxy/proxy_config_service_fixed.h" |
| 30 #include "net/proxy/proxy_script_fetcher.h" | 31 #include "net/proxy/proxy_script_fetcher.h" |
| 31 #include "net/proxy/proxy_service.h" | 32 #include "net/proxy/proxy_service.h" |
| 32 #include "net/url_request/url_request.h" | 33 #include "net/url_request/url_request.h" |
| 33 #include "webkit/glue/webkit_glue.h" | 34 #include "webkit/glue/webkit_glue.h" |
| 34 | 35 |
| (...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 DCHECK(pref_name_in && prefs); | 538 DCHECK(pref_name_in && prefs); |
| 538 if (*pref_name_in == prefs::kAcceptLanguages) { | 539 if (*pref_name_in == prefs::kAcceptLanguages) { |
| 539 std::string accept_language = | 540 std::string accept_language = |
| 540 WideToASCII(prefs->GetString(prefs::kAcceptLanguages)); | 541 WideToASCII(prefs->GetString(prefs::kAcceptLanguages)); |
| 541 ChromeThread::PostTask( | 542 ChromeThread::PostTask( |
| 542 ChromeThread::IO, FROM_HERE, | 543 ChromeThread::IO, FROM_HERE, |
| 543 NewRunnableMethod( | 544 NewRunnableMethod( |
| 544 this, | 545 this, |
| 545 &ChromeURLRequestContextGetter::OnAcceptLanguageChange, | 546 &ChromeURLRequestContextGetter::OnAcceptLanguageChange, |
| 546 accept_language)); | 547 accept_language)); |
| 547 } else if (*pref_name_in == prefs::kCookieBehavior) { | |
| 548 net::CookiePolicy::Type policy_type = net::CookiePolicy::FromInt( | |
| 549 prefs_->GetInteger(prefs::kCookieBehavior)); | |
| 550 ChromeThread::PostTask( | |
| 551 ChromeThread::IO, FROM_HERE, | |
| 552 NewRunnableMethod( | |
| 553 this, | |
| 554 &ChromeURLRequestContextGetter::OnCookiePolicyChange, | |
| 555 policy_type)); | |
| 556 } else if (*pref_name_in == prefs::kDefaultCharset) { | 548 } else if (*pref_name_in == prefs::kDefaultCharset) { |
| 557 std::string default_charset = | 549 std::string default_charset = |
| 558 WideToASCII(prefs->GetString(prefs::kDefaultCharset)); | 550 WideToASCII(prefs->GetString(prefs::kDefaultCharset)); |
| 559 ChromeThread::PostTask( | 551 ChromeThread::PostTask( |
| 560 ChromeThread::IO, FROM_HERE, | 552 ChromeThread::IO, FROM_HERE, |
| 561 NewRunnableMethod( | 553 NewRunnableMethod( |
| 562 this, | 554 this, |
| 563 &ChromeURLRequestContextGetter::OnDefaultCharsetChange, | 555 &ChromeURLRequestContextGetter::OnDefaultCharsetChange, |
| 564 default_charset)); | 556 default_charset)); |
| 565 } | 557 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 589 disk_cache_path, | 581 disk_cache_path, |
| 590 cache_size, | 582 cache_size, |
| 591 off_the_record)); | 583 off_the_record)); |
| 592 } | 584 } |
| 593 | 585 |
| 594 void ChromeURLRequestContextGetter::OnAcceptLanguageChange( | 586 void ChromeURLRequestContextGetter::OnAcceptLanguageChange( |
| 595 const std::string& accept_language) { | 587 const std::string& accept_language) { |
| 596 GetIOContext()->OnAcceptLanguageChange(accept_language); | 588 GetIOContext()->OnAcceptLanguageChange(accept_language); |
| 597 } | 589 } |
| 598 | 590 |
| 599 void ChromeURLRequestContextGetter::OnCookiePolicyChange( | |
| 600 net::CookiePolicy::Type type) { | |
| 601 GetIOContext()->OnCookiePolicyChange(type); | |
| 602 } | |
| 603 | |
| 604 void ChromeURLRequestContextGetter::OnDefaultCharsetChange( | 591 void ChromeURLRequestContextGetter::OnDefaultCharsetChange( |
| 605 const std::string& default_charset) { | 592 const std::string& default_charset) { |
| 606 GetIOContext()->OnDefaultCharsetChange(default_charset); | 593 GetIOContext()->OnDefaultCharsetChange(default_charset); |
| 607 } | 594 } |
| 608 | 595 |
| 609 void ChromeURLRequestContextGetter::GetCookieStoreAsyncHelper( | 596 void ChromeURLRequestContextGetter::GetCookieStoreAsyncHelper( |
| 610 base::WaitableEvent* completion, | 597 base::WaitableEvent* completion, |
| 611 net::CookieStore** result) { | 598 net::CookieStore** result) { |
| 612 // Note that CookieStore is refcounted, yet we do not add a reference. | 599 // Note that CookieStore is refcounted, yet we do not add a reference. |
| 613 *result = GetURLRequestContext()->cookie_store(); | 600 *result = GetURLRequestContext()->cookie_store(); |
| 614 completion->Signal(); | 601 completion->Signal(); |
| 615 } | 602 } |
| 616 | 603 |
| 617 // ---------------------------------------------------------------------------- | 604 // ---------------------------------------------------------------------------- |
| 618 // ChromeURLRequestContext | 605 // ChromeURLRequestContext |
| 619 // ---------------------------------------------------------------------------- | 606 // ---------------------------------------------------------------------------- |
| 620 | 607 |
| 621 ChromeURLRequestContext::ChromeURLRequestContext() { | 608 ChromeURLRequestContext::ChromeURLRequestContext() { |
| 622 CheckCurrentlyOnIOThread(); | 609 CheckCurrentlyOnIOThread(); |
| 610 |
| 611 cookie_policy_ = this; // We implement CookiePolicy |
| 612 |
| 623 url_request_tracker()->SetGraveyardFilter( | 613 url_request_tracker()->SetGraveyardFilter( |
| 624 &ChromeURLRequestContext::ShouldTrackRequest); | 614 &ChromeURLRequestContext::ShouldTrackRequest); |
| 625 } | 615 } |
| 626 | 616 |
| 627 ChromeURLRequestContext::~ChromeURLRequestContext() { | 617 ChromeURLRequestContext::~ChromeURLRequestContext() { |
| 628 CheckCurrentlyOnIOThread(); | 618 CheckCurrentlyOnIOThread(); |
| 619 |
| 629 if (appcache_service_.get() && appcache_service_->request_context() == this) | 620 if (appcache_service_.get() && appcache_service_->request_context() == this) |
| 630 appcache_service_->set_request_context(NULL); | 621 appcache_service_->set_request_context(NULL); |
| 631 | 622 |
| 632 if (proxy_service_ && | 623 if (proxy_service_ && |
| 633 proxy_service_->GetProxyScriptFetcher() && | 624 proxy_service_->GetProxyScriptFetcher() && |
| 634 proxy_service_->GetProxyScriptFetcher()->GetRequestContext() == this) { | 625 proxy_service_->GetProxyScriptFetcher()->GetRequestContext() == this) { |
| 635 // Remove the ProxyScriptFetcher's weak reference to this context. | 626 // Remove the ProxyScriptFetcher's weak reference to this context. |
| 636 proxy_service_->SetProxyScriptFetcher(NULL); | 627 proxy_service_->SetProxyScriptFetcher(NULL); |
| 637 } | 628 } |
| 638 | 629 |
| 639 #if defined(OS_LINUX) | 630 #if defined(OS_LINUX) |
| 640 if (this == net::GetURLRequestContextForOCSP()) { | 631 if (this == net::GetURLRequestContextForOCSP()) { |
| 641 // We are releasing the URLRequestContext used by OCSP handlers. | 632 // We are releasing the URLRequestContext used by OCSP handlers. |
| 642 net::SetURLRequestContextForOCSP(NULL); | 633 net::SetURLRequestContextForOCSP(NULL); |
| 643 } | 634 } |
| 644 #endif | 635 #endif |
| 645 | 636 |
| 646 NotificationService::current()->Notify( | 637 NotificationService::current()->Notify( |
| 647 NotificationType::URL_REQUEST_CONTEXT_RELEASED, | 638 NotificationType::URL_REQUEST_CONTEXT_RELEASED, |
| 648 Source<URLRequestContext>(this), | 639 Source<URLRequestContext>(this), |
| 649 NotificationService::NoDetails()); | 640 NotificationService::NoDetails()); |
| 650 | 641 |
| 651 delete ftp_transaction_factory_; | 642 delete ftp_transaction_factory_; |
| 652 delete http_transaction_factory_; | 643 delete http_transaction_factory_; |
| 644 |
| 645 cookie_policy_ = NULL; |
| 653 } | 646 } |
| 654 | 647 |
| 655 FilePath ChromeURLRequestContext::GetPathForExtension(const std::string& id) { | 648 FilePath ChromeURLRequestContext::GetPathForExtension(const std::string& id) { |
| 656 ExtensionInfoMap::iterator iter = extension_info_.find(id); | 649 ExtensionInfoMap::iterator iter = extension_info_.find(id); |
| 657 if (iter != extension_info_.end()) | 650 if (iter != extension_info_.end()) |
| 658 return iter->second->path; | 651 return iter->second->path; |
| 659 else | 652 else |
| 660 return FilePath(); | 653 return FilePath(); |
| 661 } | 654 } |
| 662 | 655 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 | 744 |
| 752 void ChromeURLRequestContext::OnUnloadedExtension(const std::string& id) { | 745 void ChromeURLRequestContext::OnUnloadedExtension(const std::string& id) { |
| 753 CheckCurrentlyOnIOThread(); | 746 CheckCurrentlyOnIOThread(); |
| 754 if (is_off_the_record_) | 747 if (is_off_the_record_) |
| 755 return; | 748 return; |
| 756 ExtensionInfoMap::iterator iter = extension_info_.find(id); | 749 ExtensionInfoMap::iterator iter = extension_info_.find(id); |
| 757 DCHECK(iter != extension_info_.end()); | 750 DCHECK(iter != extension_info_.end()); |
| 758 extension_info_.erase(iter); | 751 extension_info_.erase(iter); |
| 759 } | 752 } |
| 760 | 753 |
| 754 bool ChromeURLRequestContext::AreCookiesEnabled() const { |
| 755 ContentSetting setting = |
| 756 host_content_settings_map_->GetDefaultContentSetting( |
| 757 CONTENT_SETTINGS_TYPE_COOKIES); |
| 758 return setting != CONTENT_SETTING_BLOCK; |
| 759 } |
| 760 |
| 761 bool ChromeURLRequestContext::CanGetCookies(const GURL& url, |
| 762 const GURL& first_party) { |
| 763 if (host_content_settings_map_->BlockThirdPartyCookies()) { |
| 764 net::StaticCookiePolicy policy( |
| 765 net::StaticCookiePolicy::BLOCK_THIRD_PARTY_COOKIES); |
| 766 if (!policy.CanGetCookies(url, first_party)) |
| 767 return false; |
| 768 } |
| 769 |
| 770 ContentSetting setting = host_content_settings_map_->GetContentSetting( |
| 771 url.host(), CONTENT_SETTINGS_TYPE_COOKIES); |
| 772 if (setting == CONTENT_SETTING_BLOCK) |
| 773 return false; |
| 774 |
| 775 // TODO(darin): Implement CONTENT_SETTING_ASK |
| 776 return true; |
| 777 } |
| 778 |
| 779 bool ChromeURLRequestContext::CanSetCookie(const GURL& url, |
| 780 const GURL& first_party) { |
| 781 if (host_content_settings_map_->BlockThirdPartyCookies()) { |
| 782 net::StaticCookiePolicy policy( |
| 783 net::StaticCookiePolicy::BLOCK_THIRD_PARTY_COOKIES); |
| 784 if (!policy.CanSetCookie(url, first_party)) |
| 785 return false; |
| 786 } |
| 787 |
| 788 ContentSetting setting = host_content_settings_map_->GetContentSetting( |
| 789 url.host(), CONTENT_SETTINGS_TYPE_COOKIES); |
| 790 if (setting == CONTENT_SETTING_BLOCK) |
| 791 return false; |
| 792 |
| 793 // TODO(darin): Implement CONTENT_SETTING_ASK |
| 794 return true; |
| 795 } |
| 796 |
| 761 ChromeURLRequestContext::ChromeURLRequestContext( | 797 ChromeURLRequestContext::ChromeURLRequestContext( |
| 762 ChromeURLRequestContext* other) { | 798 ChromeURLRequestContext* other) { |
| 763 CheckCurrentlyOnIOThread(); | 799 CheckCurrentlyOnIOThread(); |
| 764 | 800 |
| 801 cookie_policy_ = this; // We implement CookiePolicy |
| 802 |
| 765 // Set URLRequestContext members | 803 // Set URLRequestContext members |
| 766 host_resolver_ = other->host_resolver_; | 804 host_resolver_ = other->host_resolver_; |
| 767 proxy_service_ = other->proxy_service_; | 805 proxy_service_ = other->proxy_service_; |
| 768 ssl_config_service_ = other->ssl_config_service_; | 806 ssl_config_service_ = other->ssl_config_service_; |
| 769 http_transaction_factory_ = other->http_transaction_factory_; | 807 http_transaction_factory_ = other->http_transaction_factory_; |
| 770 ftp_transaction_factory_ = other->ftp_transaction_factory_; | 808 ftp_transaction_factory_ = other->ftp_transaction_factory_; |
| 771 cookie_store_ = other->cookie_store_; | 809 cookie_store_ = other->cookie_store_; |
| 772 cookie_policy_.set_type(other->cookie_policy_.type()); | |
| 773 transport_security_state_ = other->transport_security_state_; | 810 transport_security_state_ = other->transport_security_state_; |
| 774 accept_language_ = other->accept_language_; | 811 accept_language_ = other->accept_language_; |
| 775 accept_charset_ = other->accept_charset_; | 812 accept_charset_ = other->accept_charset_; |
| 776 referrer_charset_ = other->referrer_charset_; | 813 referrer_charset_ = other->referrer_charset_; |
| 777 | 814 |
| 778 // Set ChromeURLRequestContext members | 815 // Set ChromeURLRequestContext members |
| 779 extension_info_ = other->extension_info_; | 816 extension_info_ = other->extension_info_; |
| 780 user_script_dir_path_ = other->user_script_dir_path_; | 817 user_script_dir_path_ = other->user_script_dir_path_; |
| 781 appcache_service_ = other->appcache_service_; | 818 appcache_service_ = other->appcache_service_; |
| 782 host_content_settings_map_ = other->host_content_settings_map_; | 819 host_content_settings_map_ = other->host_content_settings_map_; |
| 783 host_zoom_map_ = other->host_zoom_map_; | 820 host_zoom_map_ = other->host_zoom_map_; |
| 784 privacy_blacklist_ = other->privacy_blacklist_; | 821 privacy_blacklist_ = other->privacy_blacklist_; |
| 785 is_media_ = other->is_media_; | 822 is_media_ = other->is_media_; |
| 786 is_off_the_record_ = other->is_off_the_record_; | 823 is_off_the_record_ = other->is_off_the_record_; |
| 787 } | 824 } |
| 788 | 825 |
| 789 void ChromeURLRequestContext::OnAcceptLanguageChange( | 826 void ChromeURLRequestContext::OnAcceptLanguageChange( |
| 790 const std::string& accept_language) { | 827 const std::string& accept_language) { |
| 791 CheckCurrentlyOnIOThread(); | 828 CheckCurrentlyOnIOThread(); |
| 792 accept_language_ = | 829 accept_language_ = |
| 793 net::HttpUtil::GenerateAcceptLanguageHeader(accept_language); | 830 net::HttpUtil::GenerateAcceptLanguageHeader(accept_language); |
| 794 } | 831 } |
| 795 | 832 |
| 796 void ChromeURLRequestContext::OnCookiePolicyChange( | |
| 797 net::CookiePolicy::Type type) { | |
| 798 CheckCurrentlyOnIOThread(); | |
| 799 cookie_policy_.set_type(type); | |
| 800 } | |
| 801 | |
| 802 void ChromeURLRequestContext::OnDefaultCharsetChange( | 833 void ChromeURLRequestContext::OnDefaultCharsetChange( |
| 803 const std::string& default_charset) { | 834 const std::string& default_charset) { |
| 804 CheckCurrentlyOnIOThread(); | 835 CheckCurrentlyOnIOThread(); |
| 805 referrer_charset_ = default_charset; | 836 referrer_charset_ = default_charset; |
| 806 accept_charset_ = | 837 accept_charset_ = |
| 807 net::HttpUtil::GenerateAcceptCharsetHeader(default_charset); | 838 net::HttpUtil::GenerateAcceptCharsetHeader(default_charset); |
| 808 } | 839 } |
| 809 | 840 |
| 810 // static | 841 // static |
| 811 bool ChromeURLRequestContext::ShouldTrackRequest(const GURL& url) { | 842 bool ChromeURLRequestContext::ShouldTrackRequest(const GURL& url) { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 843 // when download request is made through the context menu in a web page). | 874 // when download request is made through the context menu in a web page). |
| 844 // At the moment, it'll remain 'undeterministic' when a user | 875 // At the moment, it'll remain 'undeterministic' when a user |
| 845 // types a URL in the omnibar or click on a download link in a page. | 876 // types a URL in the omnibar or click on a download link in a page. |
| 846 // For the latter, we need a change on the webkit-side. | 877 // For the latter, we need a change on the webkit-side. |
| 847 // We initialize it to the default charset here and a user will | 878 // We initialize it to the default charset here and a user will |
| 848 // have an *arguably* better default charset for interpreting a raw 8bit | 879 // have an *arguably* better default charset for interpreting a raw 8bit |
| 849 // C-D header field. It means the native OS codepage fallback in | 880 // C-D header field. It means the native OS codepage fallback in |
| 850 // net_util::GetSuggestedFilename is unlikely to be taken. | 881 // net_util::GetSuggestedFilename is unlikely to be taken. |
| 851 referrer_charset_ = default_charset; | 882 referrer_charset_ = default_charset; |
| 852 | 883 |
| 853 cookie_policy_type_ = net::CookiePolicy::FromInt( | |
| 854 prefs->GetInteger(prefs::kCookieBehavior)); | |
| 855 | |
| 856 host_content_settings_map_ = profile->GetHostContentSettingsMap(); | 884 host_content_settings_map_ = profile->GetHostContentSettingsMap(); |
| 857 | 885 |
| 858 host_zoom_map_ = profile->GetHostZoomMap(); | 886 host_zoom_map_ = profile->GetHostZoomMap(); |
| 859 | 887 |
| 860 privacy_blacklist_ = profile->GetPrivacyBlacklist(); | 888 privacy_blacklist_ = profile->GetPrivacyBlacklist(); |
| 861 | 889 |
| 862 // TODO(eroman): this doesn't look safe; sharing between IO and UI threads! | 890 // TODO(eroman): this doesn't look safe; sharing between IO and UI threads! |
| 863 transport_security_state_ = profile->GetTransportSecurityState(); | 891 transport_security_state_ = profile->GetTransportSecurityState(); |
| 864 | 892 |
| 865 if (profile->GetExtensionsService()) { | 893 if (profile->GetExtensionsService()) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 891 | 919 |
| 892 void ChromeURLRequestContextFactory::ApplyProfileParametersToContext( | 920 void ChromeURLRequestContextFactory::ApplyProfileParametersToContext( |
| 893 ChromeURLRequestContext* context) { | 921 ChromeURLRequestContext* context) { |
| 894 // Apply all the parameters. NOTE: keep this in sync with | 922 // Apply all the parameters. NOTE: keep this in sync with |
| 895 // ChromeURLRequestContextFactory(Profile*). | 923 // ChromeURLRequestContextFactory(Profile*). |
| 896 context->set_is_media(is_media_); | 924 context->set_is_media(is_media_); |
| 897 context->set_is_off_the_record(is_off_the_record_); | 925 context->set_is_off_the_record(is_off_the_record_); |
| 898 context->set_accept_language(accept_language_); | 926 context->set_accept_language(accept_language_); |
| 899 context->set_accept_charset(accept_charset_); | 927 context->set_accept_charset(accept_charset_); |
| 900 context->set_referrer_charset(referrer_charset_); | 928 context->set_referrer_charset(referrer_charset_); |
| 901 context->set_cookie_policy_type(cookie_policy_type_); | |
| 902 context->set_extension_info(extension_info_); | 929 context->set_extension_info(extension_info_); |
| 903 context->set_user_script_dir_path(user_script_dir_path_); | 930 context->set_user_script_dir_path(user_script_dir_path_); |
| 904 context->set_host_content_settings_map(host_content_settings_map_); | 931 context->set_host_content_settings_map(host_content_settings_map_); |
| 905 context->set_host_zoom_map(host_zoom_map_); | 932 context->set_host_zoom_map(host_zoom_map_); |
| 906 context->set_privacy_blacklist(privacy_blacklist_); | 933 context->set_privacy_blacklist(privacy_blacklist_); |
| 907 context->set_transport_security_state( | 934 context->set_transport_security_state( |
| 908 transport_security_state_); | 935 transport_security_state_); |
| 909 context->set_ssl_config_service(ssl_config_service_); | 936 context->set_ssl_config_service(ssl_config_service_); |
| 910 } | 937 } |
| 911 | 938 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 961 } | 988 } |
| 962 | 989 |
| 963 if (command_line.HasSwitch(switches::kProxyBypassList)) { | 990 if (command_line.HasSwitch(switches::kProxyBypassList)) { |
| 964 proxy_config->ParseNoProxyList( | 991 proxy_config->ParseNoProxyList( |
| 965 WideToASCII(command_line.GetSwitchValue( | 992 WideToASCII(command_line.GetSwitchValue( |
| 966 switches::kProxyBypassList))); | 993 switches::kProxyBypassList))); |
| 967 } | 994 } |
| 968 | 995 |
| 969 return proxy_config; | 996 return proxy_config; |
| 970 } | 997 } |
| OLD | NEW |