Index: chrome/test/testing_profile.cc |
diff --git a/chrome/test/testing_profile.cc b/chrome/test/testing_profile.cc |
index 184a7034be3eabec6adaee6993f9f70148a7ac9c..9e1f428b215e0513cb66f1c3d93f1ff2000ef006 100644 |
--- a/chrome/test/testing_profile.cc |
+++ b/chrome/test/testing_profile.cc |
@@ -27,6 +27,7 @@ |
#include "chrome/browser/host_content_settings_map.h" |
#include "chrome/browser/in_process_webkit/webkit_context.h" |
#include "chrome/browser/net/gaia/token_service.h" |
+#include "chrome/browser/net/pref_proxy_config_service.h" |
#include "chrome/browser/notifications/desktop_notification_service.h" |
#include "chrome/browser/prefs/browser_prefs.h" |
#include "chrome/browser/search_engines/template_url_fetcher.h" |
@@ -39,7 +40,6 @@ |
#include "chrome/common/notification_service.h" |
#include "chrome/common/url_constants.h" |
#include "chrome/test/testing_pref_service.h" |
-#include "chrome/test/test_url_request_context_getter.h" |
#include "chrome/test/ui_test_utils.h" |
#include "net/base/cookie_monster.h" |
#include "net/url_request/url_request_context.h" |
@@ -112,6 +112,26 @@ class BookmarkLoadObserver : public BookmarkModelObserver { |
DISALLOW_COPY_AND_ASSIGN(BookmarkLoadObserver); |
}; |
+// Used to return a dummy context (normally the context is on the IO thread). |
+// The one here can be run on the main test thread. Note that this can lead to |
+// a leak if your test does not have a BrowserThread::IO in it because |
+// URLRequestContextGetter is defined as a ReferenceCounted object with a |
+// special trait that deletes it on the IO thread. |
+class TestURLRequestContextGetter : public URLRequestContextGetter { |
eroman
2010/11/30 02:58:54
What is this used for? (I don't see it referenced
battre (please use the other)
2010/12/02 18:06:12
Line 427, see below.
|
+ public: |
+ virtual URLRequestContext* GetURLRequestContext() { |
+ if (!context_) |
+ context_ = new TestURLRequestContext(); |
+ return context_.get(); |
+ } |
+ virtual scoped_refptr<base::MessageLoopProxy> GetIOMessageLoopProxy() const { |
+ return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); |
+ } |
+ |
+ private: |
+ scoped_refptr<URLRequestContext> context_; |
+}; |
+ |
class TestExtensionURLRequestContext : public URLRequestContext { |
public: |
TestExtensionURLRequestContext() { |
@@ -185,6 +205,8 @@ TestingProfile::~TestingProfile() { |
extensions_service_->DestroyingProfile(); |
extensions_service_ = NULL; |
} |
+ if (pref_proxy_config_tracker_.get()) |
+ pref_proxy_config_tracker_->DetachFromPrefService(); |
} |
void TestingProfile::CreateFaviconService() { |
@@ -470,6 +492,13 @@ DesktopNotificationService* TestingProfile::GetDesktopNotificationService() { |
return desktop_notification_service_.get(); |
} |
+PrefProxyConfigTracker* TestingProfile::GetProxyConfigTracker() { |
+ if (!pref_proxy_config_tracker_) |
+ pref_proxy_config_tracker_ = new PrefProxyConfigTracker(GetPrefs()); |
+ |
+ return pref_proxy_config_tracker_; |
+} |
+ |
void TestingProfile::BlockUntilHistoryProcessesPendingRequests() { |
DCHECK(history_service_.get()); |
DCHECK(MessageLoop::current()); |