From fa2aaa48b1fb35f09a1c30035d0f7ba742e00956 Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Tue, 20 Sep 2016 12:01:59 -0700 Subject: [PATCH] allow GOOGLE_API_KEY to be set in environment --- atom/browser/atom_access_token_store.cc | 13 +++++-------- atom/browser/atom_access_token_store.h | 1 + atom/common/google_api_key.h | 5 +++++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/atom/browser/atom_access_token_store.cc b/atom/browser/atom_access_token_store.cc index 7c04113ff5..0ad637d7af 100644 --- a/atom/browser/atom_access_token_store.cc +++ b/atom/browser/atom_access_token_store.cc @@ -8,6 +8,7 @@ #include "atom/browser/atom_browser_context.h" #include "atom/common/google_api_key.h" +#include "base/environment.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/geolocation_provider.h" @@ -17,13 +18,6 @@ namespace atom { namespace { -// Notice that we just combined the api key with the url together here, because -// if we use the standard {url: key} format Chromium would override our key with -// the predefined one in common.gypi of libchromiumcontent, which is empty. -const char* kGeolocationProviderURL = - "https://www.googleapis.com/geolocation/v1/geolocate?key=" - GOOGLEAPIS_API_KEY; - // Loads access tokens and other necessary data on the UI thread, and // calls back to the originator on the originating thread. class TokenLoadingJob : public base::RefCountedThreadSafe { @@ -57,7 +51,7 @@ class TokenLoadingJob : public base::RefCountedThreadSafe { // of std::map on Linux, this can work around it. content::AccessTokenStore::AccessTokenMap access_token_map; std::pair token_pair; - token_pair.first = GURL(kGeolocationProviderURL); + token_pair.first = GURL(GOOGLEAPIS_ENDPOINT + api_key_); access_token_map.insert(token_pair); callback_.Run(access_token_map, request_context_getter_); @@ -71,6 +65,9 @@ class TokenLoadingJob : public base::RefCountedThreadSafe { AtomAccessTokenStore::AtomAccessTokenStore() { content::GeolocationProvider::GetInstance()->UserDidOptIntoLocationServices(); + std::unique_ptr env(base::Environment::Create()); + if (!env->GetVar("GOOGLE_API_KEY", &api_key_)) + api_key_ = GOOGLEAPIS_API_KEY; } AtomAccessTokenStore::~AtomAccessTokenStore() { diff --git a/atom/browser/atom_access_token_store.h b/atom/browser/atom_access_token_store.h index d70d44a0cd..dccbe3f5c4 100644 --- a/atom/browser/atom_access_token_store.h +++ b/atom/browser/atom_access_token_store.h @@ -21,6 +21,7 @@ class AtomAccessTokenStore : public content::AccessTokenStore { const base::string16& access_token) override; private: + std::string api_key_; DISALLOW_COPY_AND_ASSIGN(AtomAccessTokenStore); }; diff --git a/atom/common/google_api_key.h b/atom/common/google_api_key.h index dc38272ec6..e7a3209906 100644 --- a/atom/common/google_api_key.h +++ b/atom/common/google_api_key.h @@ -5,6 +5,11 @@ #ifndef ATOM_COMMON_GOOGLE_API_KEY_H_ #define ATOM_COMMON_GOOGLE_API_KEY_H_ +#ifndef GOOGLEAPIS_ENDPOINT +#define GOOGLEAPIS_ENDPOINT \ + "https://www.googleapis.com/geolocation/v1/geolocate?key=" +#endif + #ifndef GOOGLEAPIS_API_KEY #define GOOGLEAPIS_API_KEY "AIzaSyAQfxPJiounkhOjODEO5ZieffeBv6yft2Q" #endif