summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-25 00:09:23 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-25 00:09:23 +0000
commit32538d988e57c52b951d95748a0a1fe53ed8c7b9 (patch)
tree97d0fbbeb9d40b7a0fe826943f7b7c8d6e16e039
parent43df447aacfc08447360071d8c03bf76ee5c0fb9 (diff)
downloadchromium_src-32538d988e57c52b951d95748a0a1fe53ed8c7b9.zip
chromium_src-32538d988e57c52b951d95748a0a1fe53ed8c7b9.tar.gz
chromium_src-32538d988e57c52b951d95748a0a1fe53ed8c7b9.tar.bz2
Get rid of the link time dependency between content and chrome through the geolocation code.
BUG=76697 Review URL: http://codereview.chromium.org/7734005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98151 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chrome_content_browser_client.cc5
-rw-r--r--chrome/browser/chrome_content_browser_client.h1
-rw-r--r--chrome/browser/geolocation/access_token_store_browsertest.cc10
-rw-r--r--chrome/browser/geolocation/chrome_access_token_store.cc (renamed from chrome/browser/geolocation/access_token_store.cc)60
-rw-r--r--chrome/browser/geolocation/chrome_access_token_store.h34
-rw-r--r--chrome/browser/geolocation/geolocation_prefs.cc4
-rw-r--r--chrome/chrome_browser.gypi3
-rw-r--r--content/browser/content_browser_client.h4
-rw-r--r--content/browser/geolocation/access_token_store.cc23
-rw-r--r--content/browser/geolocation/access_token_store.h5
-rw-r--r--content/browser/geolocation/arbitrator_dependency_factory.cc2
-rw-r--r--content/browser/mock_content_browser_client.cc4
-rw-r--r--content/browser/mock_content_browser_client.h1
-rw-r--r--content/content_browser.gypi1
14 files changed, 91 insertions, 66 deletions
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 355ec5f..c96c81e 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -20,6 +20,7 @@
#include "chrome/browser/extensions/extension_message_handler.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_web_ui.h"
+#include "chrome/browser/geolocation/chrome_access_token_store.h"
#include "chrome/browser/google/google_util.h"
#include "chrome/browser/net/chrome_net_log.h"
#include "chrome/browser/notifications/desktop_notification_service.h"
@@ -671,6 +672,10 @@ speech_input::SpeechInputManager*
return speech_input::ChromeSpeechInputManager::GetInstance();
}
+AccessTokenStore* ChromeContentBrowserClient::CreateAccessTokenStore() {
+ return new ChromeAccessTokenStore();
+}
+
bool ChromeContentBrowserClient::IsFastShutdownPossible() {
const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
return !browser_command_line.HasSwitch(switches::kChromeFrame);
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
index 375de53b..caae3b3 100644
--- a/chrome/browser/chrome_content_browser_client.h
+++ b/chrome/browser/chrome_content_browser_client.h
@@ -100,6 +100,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient {
virtual DevToolsManager* GetDevToolsManager() OVERRIDE;
virtual net::NetLog* GetNetLog() OVERRIDE;
virtual speech_input::SpeechInputManager* GetSpeechInputManager() OVERRIDE;
+ virtual AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
virtual bool IsFastShutdownPossible() OVERRIDE;
virtual WebPreferences GetWebkitPrefs(
content::BrowserContext* browser_context,
diff --git a/chrome/browser/geolocation/access_token_store_browsertest.cc b/chrome/browser/geolocation/access_token_store_browsertest.cc
index 773a38c..5d138ae 100644
--- a/chrome/browser/geolocation/access_token_store_browsertest.cc
+++ b/chrome/browser/geolocation/access_token_store_browsertest.cc
@@ -2,10 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/geolocation/access_token_store.h"
-
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
+#include "chrome/browser/geolocation/chrome_access_token_store.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/browser/browser_thread.h"
@@ -45,7 +44,7 @@ void StartTestStepFromClientThread(
AccessTokenStore::LoadAccessTokensCallbackType* callback) {
ASSERT_TRUE(BrowserThread::CurrentlyOn(kExpectedClientThreadId));
if (*store == NULL)
- (*store) = NewChromePrefsAccessTokenStore();
+ (*store) = new ChromeAccessTokenStore();
(*store)->LoadAccessTokens(consumer, callback);
}
@@ -57,7 +56,7 @@ struct TokenLoadClientForTest {
void RunCancelTestInClientTread() {
ASSERT_TRUE(BrowserThread::CurrentlyOn(kExpectedClientThreadId));
- scoped_refptr<AccessTokenStore> store(NewChromePrefsAccessTokenStore());
+ scoped_refptr<AccessTokenStore> store(new ChromeAccessTokenStore());
CancelableRequestConsumer consumer;
TokenLoadClientForTest load_client;
@@ -117,8 +116,7 @@ void GeolocationAccessTokenStoreTest::OnAccessTokenStoresLoaded(
}
if (token_to_set_) {
- scoped_refptr<AccessTokenStore> store(
- NewChromePrefsAccessTokenStore());
+ scoped_refptr<AccessTokenStore> store(new ChromeAccessTokenStore());
store->SaveAccessToken(ref_url_, *token_to_set_);
}
BrowserThread::PostTask(
diff --git a/chrome/browser/geolocation/access_token_store.cc b/chrome/browser/geolocation/chrome_access_token_store.cc
index f76bcc5..2ba45a5 100644
--- a/chrome/browser/geolocation/access_token_store.cc
+++ b/chrome/browser/geolocation/chrome_access_token_store.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/geolocation/access_token_store.h"
+#include "chrome/browser/geolocation/chrome_access_token_store.h"
#include "base/string_piece.h"
#include "base/utf_string_conversions.h"
@@ -14,28 +14,14 @@
#include "content/browser/browser_thread.h"
#include "googleurl/src/gurl.h"
-namespace {
-class ChromePrefsAccessTokenStore : public AccessTokenStore {
- public:
- ChromePrefsAccessTokenStore();
-
- private:
- void LoadDictionaryStoreInUIThread(
- scoped_refptr<CancelableRequest<LoadAccessTokensCallbackType> > request);
-
- // AccessTokenStore
- virtual void DoLoadAccessTokens(
- scoped_refptr<CancelableRequest<LoadAccessTokensCallbackType> > request);
- virtual void SaveAccessToken(
- const GURL& server_url, const string16& access_token);
-
- DISALLOW_COPY_AND_ASSIGN(ChromePrefsAccessTokenStore);
-};
+void ChromeAccessTokenStore::RegisterPrefs(PrefService* prefs) {
+ prefs->RegisterDictionaryPref(prefs::kGeolocationAccessToken);
+}
-ChromePrefsAccessTokenStore::ChromePrefsAccessTokenStore() {
+ChromeAccessTokenStore::ChromeAccessTokenStore() {
}
-void ChromePrefsAccessTokenStore::LoadDictionaryStoreInUIThread(
+void ChromeAccessTokenStore::LoadDictionaryStoreInUIThread(
scoped_refptr<CancelableRequest<LoadAccessTokensCallbackType> > request) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (request->canceled())
@@ -59,10 +45,10 @@ void ChromePrefsAccessTokenStore::LoadDictionaryStoreInUIThread(
request->ForwardResultAsync(MakeTuple(access_token_set));
}
-void ChromePrefsAccessTokenStore::DoLoadAccessTokens(
+void ChromeAccessTokenStore::DoLoadAccessTokens(
scoped_refptr<CancelableRequest<LoadAccessTokensCallbackType> > request) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, NewRunnableMethod(
- this, &ChromePrefsAccessTokenStore::LoadDictionaryStoreInUIThread,
+ this, &ChromeAccessTokenStore::LoadDictionaryStoreInUIThread,
request));
}
@@ -75,36 +61,8 @@ void SetAccessTokenOnUIThread(const GURL& server_url, const string16& token) {
server_url.spec(), Value::CreateStringValue(token));
}
-void ChromePrefsAccessTokenStore::SaveAccessToken(
+void ChromeAccessTokenStore::SaveAccessToken(
const GURL& server_url, const string16& access_token) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, NewRunnableFunction(
&SetAccessTokenOnUIThread, server_url, access_token));
}
-} // namespace
-
-AccessTokenStore::AccessTokenStore() {
-}
-
-AccessTokenStore::~AccessTokenStore() {
-}
-
-void AccessTokenStore::RegisterPrefs(PrefService* prefs) {
- prefs->RegisterDictionaryPref(prefs::kGeolocationAccessToken);
-}
-
-AccessTokenStore::Handle AccessTokenStore::LoadAccessTokens(
- CancelableRequestConsumerBase* consumer,
- LoadAccessTokensCallbackType* callback) {
- scoped_refptr<CancelableRequest<LoadAccessTokensCallbackType> > request(
- new CancelableRequest<LoadAccessTokensCallbackType>(callback));
- AddRequest(request, consumer);
- DCHECK(request->handle());
-
- DoLoadAccessTokens(request);
- return request->handle();
-}
-
-// Creates a new access token store backed by the global chome prefs.
-AccessTokenStore* NewChromePrefsAccessTokenStore() {
- return new ChromePrefsAccessTokenStore;
-}
diff --git a/chrome/browser/geolocation/chrome_access_token_store.h b/chrome/browser/geolocation/chrome_access_token_store.h
new file mode 100644
index 0000000..9bd6707
--- /dev/null
+++ b/chrome/browser/geolocation/chrome_access_token_store.h
@@ -0,0 +1,34 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_GEOLOCATION_CHROME_ACCESS_TOKEN_STORE_H_
+#define CHROME_BROWSER_GEOLOCATION_CHROME_ACCESS_TOKEN_STORE_H_
+#pragma once
+
+#include "base/memory/ref_counted.h"
+#include "content/browser/geolocation/access_token_store.h"
+
+class PrefService;
+
+// Creates a new access token store backed by the global chome prefs.
+class ChromeAccessTokenStore : public AccessTokenStore {
+ public:
+ static void RegisterPrefs(PrefService* prefs);
+
+ ChromeAccessTokenStore();
+
+ private:
+ void LoadDictionaryStoreInUIThread(
+ scoped_refptr<CancelableRequest<LoadAccessTokensCallbackType> > request);
+
+ // AccessTokenStore
+ virtual void DoLoadAccessTokens(
+ scoped_refptr<CancelableRequest<LoadAccessTokensCallbackType> > request);
+ virtual void SaveAccessToken(
+ const GURL& server_url, const string16& access_token);
+
+ DISALLOW_COPY_AND_ASSIGN(ChromeAccessTokenStore);
+};
+
+#endif // CHROME_BROWSER_GEOLOCATION_CHROME_ACCESS_TOKEN_STORE_H_
diff --git a/chrome/browser/geolocation/geolocation_prefs.cc b/chrome/browser/geolocation/geolocation_prefs.cc
index c618ed9..be20326 100644
--- a/chrome/browser/geolocation/geolocation_prefs.cc
+++ b/chrome/browser/geolocation/geolocation_prefs.cc
@@ -4,11 +4,11 @@
#include "chrome/browser/geolocation/geolocation_prefs.h"
-#include "content/browser/geolocation/access_token_store.h"
+#include "chrome/browser/geolocation/chrome_access_token_store.h"
namespace geolocation {
void RegisterPrefs(PrefService* prefs) {
// Fan out to all geolocation sub-components that use prefs.
- AccessTokenStore::RegisterPrefs(prefs);
+ ChromeAccessTokenStore::RegisterPrefs(prefs);
}
} // namespace geolocation
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 8cb7071..5e8829d 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1190,7 +1190,8 @@
'browser/fullscreen_linux.cc',
'browser/fullscreen_mac.mm',
'browser/fullscreen_win.cc',
- 'browser/geolocation/access_token_store.cc',
+ 'browser/geolocation/chrome_access_token_store.cc',
+ 'browser/geolocation/chrome_access_token_store.h',
'browser/geolocation/chrome_geolocation_permission_context.cc',
'browser/geolocation/chrome_geolocation_permission_context.h',
'browser/geolocation/geolocation_prefs.cc',
diff --git a/content/browser/content_browser_client.h b/content/browser/content_browser_client.h
index c88e169..de3fcc4 100644
--- a/content/browser/content_browser_client.h
+++ b/content/browser/content_browser_client.h
@@ -13,6 +13,7 @@
#include "content/common/window_container_type.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebNotificationPresenter.h"
+class AccessTokenStore;
class BrowserRenderProcessHost;
class BrowserURLHandler;
class CommandLine;
@@ -249,6 +250,9 @@ class ContentBrowserClient {
virtual net::NetLog* GetNetLog() = 0;
virtual speech_input::SpeechInputManager* GetSpeechInputManager() = 0;
+ // Creates a new AccessTokenStore for gelocation.
+ virtual AccessTokenStore* CreateAccessTokenStore() = 0;
+
// Returns true if fast shutdown is possible.
virtual bool IsFastShutdownPossible() = 0;
diff --git a/content/browser/geolocation/access_token_store.cc b/content/browser/geolocation/access_token_store.cc
new file mode 100644
index 0000000..be1e578
--- /dev/null
+++ b/content/browser/geolocation/access_token_store.cc
@@ -0,0 +1,23 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/geolocation/access_token_store.h"
+
+AccessTokenStore::AccessTokenStore() {
+}
+
+AccessTokenStore::~AccessTokenStore() {
+}
+
+AccessTokenStore::Handle AccessTokenStore::LoadAccessTokens(
+ CancelableRequestConsumerBase* consumer,
+ LoadAccessTokensCallbackType* callback) {
+ scoped_refptr<CancelableRequest<LoadAccessTokensCallbackType> > request(
+ new CancelableRequest<LoadAccessTokensCallbackType>(callback));
+ AddRequest(request, consumer);
+ DCHECK(request->handle());
+
+ DoLoadAccessTokens(request);
+ return request->handle();
+}
diff --git a/content/browser/geolocation/access_token_store.h b/content/browser/geolocation/access_token_store.h
index ce42801..87ad577 100644
--- a/content/browser/geolocation/access_token_store.h
+++ b/content/browser/geolocation/access_token_store.h
@@ -23,13 +23,11 @@
#include "googleurl/src/gurl.h"
class GURL;
-class PrefService;
// Provides storage for the access token used in the network request.
class AccessTokenStore : public base::RefCountedThreadSafe<AccessTokenStore>,
public CancelableRequestProvider {
public:
- static void RegisterPrefs(PrefService* prefs);
// Map of server URLs to associated access token.
typedef std::map<GURL, string16> AccessTokenSet;
@@ -55,7 +53,4 @@ class AccessTokenStore : public base::RefCountedThreadSafe<AccessTokenStore>,
DISALLOW_COPY_AND_ASSIGN(AccessTokenStore);
};
-// Creates a new access token store backed by the global chome prefs.
-AccessTokenStore* NewChromePrefsAccessTokenStore();
-
#endif // CONTENT_BROWSER_GEOLOCATION_ACCESS_TOKEN_STORE_H_
diff --git a/content/browser/geolocation/arbitrator_dependency_factory.cc b/content/browser/geolocation/arbitrator_dependency_factory.cc
index ada618d..252813d 100644
--- a/content/browser/geolocation/arbitrator_dependency_factory.cc
+++ b/content/browser/geolocation/arbitrator_dependency_factory.cc
@@ -29,7 +29,7 @@ DefaultGeolocationArbitratorDependencyFactory::GetTimeFunction() {
AccessTokenStore*
DefaultGeolocationArbitratorDependencyFactory::NewAccessTokenStore() {
- return NewChromePrefsAccessTokenStore();
+ return content::GetContentClient()->browser()->CreateAccessTokenStore();
}
LocationProviderBase*
diff --git a/content/browser/mock_content_browser_client.cc b/content/browser/mock_content_browser_client.cc
index 4dbc53a..88d9102 100644
--- a/content/browser/mock_content_browser_client.cc
+++ b/content/browser/mock_content_browser_client.cc
@@ -211,6 +211,10 @@ speech_input::SpeechInputManager*
return NULL;
}
+AccessTokenStore* MockContentBrowserClient::CreateAccessTokenStore() {
+ return NULL;
+}
+
bool MockContentBrowserClient::IsFastShutdownPossible() {
return true;
}
diff --git a/content/browser/mock_content_browser_client.h b/content/browser/mock_content_browser_client.h
index cab870c..d4a13f1 100644
--- a/content/browser/mock_content_browser_client.h
+++ b/content/browser/mock_content_browser_client.h
@@ -104,6 +104,7 @@ class MockContentBrowserClient : public ContentBrowserClient {
virtual DevToolsManager* GetDevToolsManager() OVERRIDE;
virtual net::NetLog* GetNetLog() OVERRIDE;
virtual speech_input::SpeechInputManager* GetSpeechInputManager() OVERRIDE;
+ virtual AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
virtual bool IsFastShutdownPossible() OVERRIDE;
virtual WebPreferences GetWebkitPrefs(
content::BrowserContext* browser_context,
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index 3c0b455..a78751a 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -161,6 +161,7 @@
'browser/find_pasteboard.mm',
'browser/font_list_async.cc',
'browser/font_list_async.h',
+ 'browser/geolocation/access_token_store.cc',
'browser/geolocation/access_token_store.h',
'browser/geolocation/arbitrator_dependency_factory.cc',
'browser/geolocation/arbitrator_dependency_factory.h',