| Index: google_apis/gaia/oauth2_token_service_delegate.cc
|
| diff --git a/google_apis/gaia/oauth2_token_service_delegate.cc b/google_apis/gaia/oauth2_token_service_delegate.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8d5ddb6d4c6488e39ac6d7ef8530c3411bde7799
|
| --- /dev/null
|
| +++ b/google_apis/gaia/oauth2_token_service_delegate.cc
|
| @@ -0,0 +1,85 @@
|
| +// Copyright 2014 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 "base/profiler/scoped_tracker.h"
|
| +#include "google_apis/gaia/oauth2_token_service.h"
|
| +#include "google_apis/gaia/oauth2_token_service_delegate.h"
|
| +
|
| +OAuth2TokenServiceDelegate::ScopedBatchChange::ScopedBatchChange(
|
| + OAuth2TokenServiceDelegate* delegate)
|
| + : delegate_(delegate) {
|
| + DCHECK(delegate_);
|
| + delegate_->StartBatchChanges();
|
| +}
|
| +
|
| +OAuth2TokenServiceDelegate::ScopedBatchChange::~ScopedBatchChange() {
|
| + delegate_->EndBatchChanges();
|
| +}
|
| +
|
| +OAuth2TokenServiceDelegate::OAuth2TokenServiceDelegate()
|
| + : batch_change_depth_(0) {
|
| +}
|
| +
|
| +OAuth2TokenServiceDelegate::~OAuth2TokenServiceDelegate() {
|
| +}
|
| +
|
| +void OAuth2TokenServiceDelegate::AddObserver(
|
| + OAuth2TokenService::Observer* observer) {
|
| + observer_list_.AddObserver(observer);
|
| +}
|
| +
|
| +void OAuth2TokenServiceDelegate::RemoveObserver(
|
| + OAuth2TokenService::Observer* observer) {
|
| + observer_list_.RemoveObserver(observer);
|
| +}
|
| +
|
| +void OAuth2TokenServiceDelegate::StartBatchChanges() {
|
| + ++batch_change_depth_;
|
| + if (batch_change_depth_ == 1)
|
| + FOR_EACH_OBSERVER(OAuth2TokenService::Observer, observer_list_,
|
| + OnStartBatchChanges());
|
| +}
|
| +
|
| +void OAuth2TokenServiceDelegate::EndBatchChanges() {
|
| + --batch_change_depth_;
|
| + DCHECK_LE(0, batch_change_depth_);
|
| + if (batch_change_depth_ == 0)
|
| + FOR_EACH_OBSERVER(OAuth2TokenService::Observer, observer_list_,
|
| + OnEndBatchChanges());
|
| +}
|
| +
|
| +void OAuth2TokenServiceDelegate::FireRefreshTokenAvailable(
|
| + const std::string& account_id) {
|
| + // TODO(robliao): Remove ScopedTracker below once https://crbug.com/422460 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "422460 OAuth2TokenService::FireRefreshTokenAvailable"));
|
| +
|
| + FOR_EACH_OBSERVER(OAuth2TokenService::Observer, observer_list_,
|
| + OnRefreshTokenAvailable(account_id));
|
| +}
|
| +
|
| +void OAuth2TokenServiceDelegate::FireRefreshTokenRevoked(
|
| + const std::string& account_id) {
|
| + FOR_EACH_OBSERVER(OAuth2TokenService::Observer, observer_list_,
|
| + OnRefreshTokenRevoked(account_id));
|
| +}
|
| +
|
| +void OAuth2TokenServiceDelegate::FireRefreshTokensLoaded() {
|
| + // TODO(robliao): Remove ScopedTracker below once https://crbug.com/422460 is
|
| + // fixed.
|
| + tracked_objects::ScopedTracker tracking_profile(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "422460 OAuth2TokenService::FireRefreshTokensLoaded"));
|
| +
|
| + FOR_EACH_OBSERVER(OAuth2TokenService::Observer, observer_list_,
|
| + OnRefreshTokensLoaded());
|
| +}
|
| +
|
| +net::URLRequestContextGetter* OAuth2TokenServiceDelegate::GetRequestContext()
|
| + const {
|
| + NOTREACHED();
|
| + return nullptr;
|
| +}
|
|
|