Do not force creating default session in C++
authorCheng Zhao <zcbenz@gmail.com>
Wed, 22 Jun 2016 06:41:56 +0000 (15:41 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Wed, 22 Jun 2016 06:41:56 +0000 (15:41 +0900)
atom/browser/atom_access_token_store.cc
atom/browser/atom_access_token_store.h
vendor/brightray

index ed87ea9..9f57148 100644 (file)
@@ -7,8 +7,8 @@
 #include <utility>
 
 #include "atom/browser/atom_browser_context.h"
-#include "atom/browser/atom_browser_main_parts.h"
 #include "atom/common/google_api_key.h"
+#include "content/public/browser/browser_thread.h"
 #include "content/public/browser/geolocation_provider.h"
 
 namespace atom {
@@ -25,6 +25,7 @@ const char* kGeolocationProviderURL =
 }  // namespace
 
 AtomAccessTokenStore::AtomAccessTokenStore() {
+  LOG(ERROR) << "AtomAccessTokenStore";
   content::GeolocationProvider::GetInstance()->UserDidOptIntoLocationServices();
 }
 
@@ -33,21 +34,35 @@ AtomAccessTokenStore::~AtomAccessTokenStore() {
 
 void AtomAccessTokenStore::LoadAccessTokens(
     const LoadAccessTokensCallback& callback) {
-  AccessTokenMap access_token_map;
+  content::BrowserThread::PostTaskAndReply(
+      content::BrowserThread::UI,
+      FROM_HERE,
+      base::Bind(&AtomAccessTokenStore::GetRequestContextOnUIThread, this),
+      base::Bind(&AtomAccessTokenStore::RespondOnOriginatingThread,
+                 this, callback));
+}
+
+void AtomAccessTokenStore::SaveAccessToken(const GURL& server_url,
+                                           const base::string16& access_token) {
+}
+
+void AtomAccessTokenStore::GetRequestContextOnUIThread() {
+  auto browser_context = brightray::BrowserContext::From("", false);
+  request_context_getter_ = browser_context->GetRequestContext();
+}
 
+void AtomAccessTokenStore::RespondOnOriginatingThread(
+    const LoadAccessTokensCallback& callback) {
   // Equivelent to access_token_map[kGeolocationProviderURL].
   // Somehow base::string16 is causing compilation errors when used in a pair
   // of std::map on Linux, this can work around it.
+  AccessTokenMap access_token_map;
   std::pair<GURL, base::string16> token_pair;
   token_pair.first = GURL(kGeolocationProviderURL);
   access_token_map.insert(token_pair);
 
-  auto browser_context = AtomBrowserMainParts::Get()->browser_context();
-  callback.Run(access_token_map, browser_context->url_request_context_getter());
-}
-
-void AtomAccessTokenStore::SaveAccessToken(const GURL& server_url,
-                                           const base::string16& access_token) {
+  callback.Run(access_token_map, request_context_getter_.get());
+  request_context_getter_ = nullptr;
 }
 
 }  // namespace atom
index 54bc2ce..27c1911 100644 (file)
@@ -9,12 +9,10 @@
 
 namespace atom {
 
-class AtomBrowserContext;
-
 class AtomAccessTokenStore : public content::AccessTokenStore {
  public:
   AtomAccessTokenStore();
-  virtual ~AtomAccessTokenStore();
+  ~AtomAccessTokenStore();
 
   // content::AccessTokenStore:
   void LoadAccessTokens(
@@ -23,6 +21,11 @@ class AtomAccessTokenStore : public content::AccessTokenStore {
                        const base::string16& access_token) override;
 
  private:
+  void GetRequestContextOnUIThread();
+  void RespondOnOriginatingThread(const LoadAccessTokensCallback& callback);
+
+  scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
+
   DISALLOW_COPY_AND_ASSIGN(AtomAccessTokenStore);
 };
 
index 3a98173..e26f807 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 3a98173c6848bac241074979b24f5a54cc92b5b0
+Subproject commit e26f8073df2b20ba2169ffb082c5f135d542313b