Commit 0c86175a authored by Mohamed Amir Yosef's avatar Mohamed Amir Yosef Committed by Commit Bot

[NTP::Push] Add API key to the subscription request.

Bug: 735465
Change-Id: I4810c94f4c5a0f9fd61915affd2a2fd8c7f7e29c
Reviewed-on: https://chromium-review.googlesource.com/570638
Commit-Queue: Mohamed Amir Yosef <mamir@chromium.org>
Reviewed-by: default avatarvitaliii <vitaliii@chromium.org>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487039}
parent 24c277ea
......@@ -395,8 +395,17 @@ void SubscribeForGCMPushUpdates(
content::BrowserContext::GetDefaultStoragePartition(profile)
->GetURLRequestContext();
std::string api_key;
// The API is private. If we don't have the official API key, don't even try.
if (google_apis::IsGoogleChromeAPIKeyUsed()) {
bool is_stable_channel =
chrome::GetChannel() == version_info::Channel::STABLE;
api_key = is_stable_channel ? google_apis::GetAPIKey()
: google_apis::GetNonStableAPIKey();
}
auto subscription_manager = base::MakeUnique<SubscriptionManager>(
request_context, pref_service, signin_manager, token_service,
request_context, pref_service, signin_manager, token_service, api_key,
GetPushUpdatesSubscriptionEndpoint(chrome::GetChannel()),
GetPushUpdatesUnsubscriptionEndpoint(chrome::GetChannel()));
......
......@@ -15,6 +15,7 @@
#include "components/prefs/pref_service.h"
#include "components/signin/core/browser/access_token_fetcher.h"
#include "components/signin/core/browser/signin_manager_base.h"
#include "net/base/url_util.h"
namespace ntp_snippets {
......@@ -28,6 +29,7 @@ const char kPushSubscriptionBackendParam[] = "push_subscription_backend";
// Variation parameter for chrome-push-unsubscription backend.
const char kPushUnsubscriptionBackendParam[] = "push_unsubscription_backend";
const char kApiKeyParamName[] = "key";
const char kAuthorizationRequestHeaderFormat[] = "Bearer %s";
} // namespace
......@@ -64,6 +66,7 @@ SubscriptionManager::SubscriptionManager(
PrefService* pref_service,
SigninManagerBase* signin_manager,
OAuth2TokenService* access_token_service,
const std::string& api_key,
const GURL& subscribe_url,
const GURL& unsubscribe_url)
: url_request_context_getter_(std::move(url_request_context_getter)),
......@@ -74,6 +77,7 @@ SubscriptionManager::SubscriptionManager(
base::Bind(&SubscriptionManager::SigninStatusChanged,
base::Unretained(this)))),
access_token_service_(access_token_service),
api_key_(api_key),
subscribe_url_(subscribe_url),
unsubscribe_url_(unsubscribe_url) {}
......@@ -96,11 +100,16 @@ void SubscriptionManager::SubscribeInternal(
const std::string& access_token) {
SubscriptionJsonRequest::Builder builder;
builder.SetToken(subscription_token)
.SetUrlRequestContextGetter(url_request_context_getter_)
.SetUrl(subscribe_url_);
.SetUrlRequestContextGetter(url_request_context_getter_);
if (!access_token.empty()) {
builder.SetUrl(subscribe_url_);
builder.SetAuthenticationHeader(base::StringPrintf(
kAuthorizationRequestHeaderFormat, access_token.c_str()));
} else {
// When not providing OAuth token, we need to pass the Google API key.
builder.SetUrl(
net::AppendQueryParameter(subscribe_url_, kApiKeyParamName, api_key_));
}
request_ = builder.Build();
......@@ -180,9 +189,10 @@ void SubscriptionManager::ResubscribeInternal(const std::string& old_token,
}
SubscriptionJsonRequest::Builder builder;
builder.SetToken(old_token)
.SetUrlRequestContextGetter(url_request_context_getter_)
.SetUrl(unsubscribe_url_);
builder.SetToken(old_token).SetUrlRequestContextGetter(
url_request_context_getter_);
builder.SetUrl(
net::AppendQueryParameter(unsubscribe_url_, kApiKeyParamName, api_key_));
request_ = builder.Build();
request_->Start(base::BindOnce(&SubscriptionManager::DidUnsubscribe,
......
......@@ -39,6 +39,7 @@ class SubscriptionManager {
PrefService* pref_service,
SigninManagerBase* signin_manager,
OAuth2TokenService* access_token_service,
const std::string& api_key,
const GURL& subscribe_url,
const GURL& unsubscribe_url);
......@@ -94,6 +95,9 @@ class SubscriptionManager {
std::unique_ptr<SigninObserver> signin_observer_;
OAuth2TokenService* access_token_service_;
// API key to use for non-authenticated requests.
const std::string api_key_;
// API endpoint for subscribing and unsubscribing.
const GURL subscribe_url_;
const GURL unsubscribe_url_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment