| Index: chrome/browser/extensions/app_notify_channel_setup.h
|
| diff --git a/chrome/browser/extensions/app_notify_channel_setup.h b/chrome/browser/extensions/app_notify_channel_setup.h
|
| deleted file mode 100644
|
| index a43e08b3cf3a0ac22c6ecded36a9c9b77f575882..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/app_notify_channel_setup.h
|
| +++ /dev/null
|
| @@ -1,180 +0,0 @@
|
| -// Copyright (c) 2012 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_EXTENSIONS_APP_NOTIFY_CHANNEL_SETUP_H_
|
| -#define CHROME_BROWSER_EXTENSIONS_APP_NOTIFY_CHANNEL_SETUP_H_
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "chrome/browser/extensions/app_notify_channel_ui.h"
|
| -#include "google_apis/gaia/oauth2_access_token_consumer.h"
|
| -#include "google_apis/gaia/oauth2_access_token_fetcher.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "net/url_request/url_fetcher.h"
|
| -#include "net/url_request/url_fetcher_delegate.h"
|
| -
|
| -class Profile;
|
| -
|
| -namespace extensions {
|
| -class AppNotifyChannelSetupTest;
|
| -
|
| -// This class uses the browser login credentials to setup app notifications
|
| -// for a given app.
|
| -//
|
| -// Performs the following steps when Start() is called:
|
| -// 1. If the user is not logged in, prompt the user to login.
|
| -// 2. OAuth2: Record a notifications grant for the user and the given app.
|
| -// 3. Get notifications channel id for the current user.
|
| -// 4. Call the delegate passed in to the constructor with the results of
|
| -// the above steps.
|
| -class AppNotifyChannelSetup
|
| - : public net::URLFetcherDelegate,
|
| - public AppNotifyChannelUI::Delegate,
|
| - public OAuth2AccessTokenConsumer,
|
| - public base::RefCountedThreadSafe<AppNotifyChannelSetup> {
|
| - public:
|
| - // These are the various error conditions, made public for use by the test
|
| - // interceptor.
|
| - enum SetupError {
|
| - NONE,
|
| - AUTH_ERROR,
|
| - INTERNAL_ERROR,
|
| - USER_CANCELLED,
|
| -
|
| - // This is used for histograms, and should always be the last value.
|
| - SETUP_ERROR_BOUNDARY
|
| - };
|
| -
|
| - class Delegate {
|
| - public:
|
| - // If successful, |channel_id| will be non-empty. On failure, |channel_id|
|
| - // will be empty and |error| will contain an error to report to the JS
|
| - // callback.
|
| - virtual void AppNotifyChannelSetupComplete(
|
| - const std::string& channel_id,
|
| - const std::string& error,
|
| - const AppNotifyChannelSetup* setup) = 0;
|
| - };
|
| -
|
| - // For tests, we allow intercepting the request to setup the channel and
|
| - // forcing the return of a certain result to the delegate.
|
| - class InterceptorForTests {
|
| - public:
|
| - virtual void DoIntercept(
|
| - const AppNotifyChannelSetup* setup,
|
| - std::string* result_channel_id,
|
| - AppNotifyChannelSetup::SetupError* result_error) = 0;
|
| - };
|
| - static void SetInterceptorForTests(InterceptorForTests* interceptor);
|
| -
|
| - // Ownership of |ui| is transferred to this object.
|
| - AppNotifyChannelSetup(Profile* profile,
|
| - const std::string& extension_id,
|
| - const std::string& client_id,
|
| - const GURL& requestor_url,
|
| - int return_route_id,
|
| - int callback_id,
|
| - AppNotifyChannelUI* ui,
|
| - base::WeakPtr<Delegate> delegate);
|
| -
|
| - AppNotifyChannelUI* ui() { return ui_.get(); }
|
| -
|
| - // This begins the process of fetching the channel id using the browser login
|
| - // credentials (or using |ui_| to prompt for login if needed).
|
| - void Start();
|
| -
|
| - // OAuth2AccessTokenConsumer implementation.
|
| - virtual void OnGetTokenSuccess(const std::string& access_token,
|
| - const base::Time& expiration_time) OVERRIDE;
|
| - virtual void OnGetTokenFailure(const GoogleServiceAuthError& error) OVERRIDE;
|
| -
|
| -
|
| - // Getters for various members.
|
| - const std::string& extension_id() const { return extension_id_; }
|
| - const std::string& client_id() const { return client_id_; }
|
| - int return_route_id() const { return return_route_id_; }
|
| - int callback_id() const { return callback_id_; }
|
| -
|
| - protected:
|
| - // net::URLFetcherDelegate.
|
| - virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
|
| -
|
| - // AppNotifyChannelUI::Delegate.
|
| - virtual void OnSyncSetupResult(bool enabled) OVERRIDE;
|
| -
|
| - private:
|
| - enum State {
|
| - INITIAL,
|
| - LOGIN_STARTED,
|
| - LOGIN_DONE,
|
| - FETCH_ACCESS_TOKEN_STARTED,
|
| - FETCH_ACCESS_TOKEN_DONE,
|
| - RECORD_GRANT_STARTED,
|
| - RECORD_GRANT_DONE,
|
| - CHANNEL_ID_SETUP_STARTED,
|
| - CHANNEL_ID_SETUP_DONE,
|
| - ERROR_STATE
|
| - };
|
| -
|
| - friend class base::RefCountedThreadSafe<AppNotifyChannelSetup>;
|
| - friend class AppNotifyChannelSetupTest;
|
| -
|
| - virtual ~AppNotifyChannelSetup();
|
| -
|
| - // Creates an instance of URLFetcher that does not send or save cookies.
|
| - // The URLFether's method will be GET if body is empty, POST otherwise.
|
| - // Caller owns the returned instance.
|
| - net::URLFetcher* CreateURLFetcher(
|
| - const GURL& url, const std::string& body, const std::string& auth_token);
|
| - void BeginLogin();
|
| - void EndLogin(bool success);
|
| - void BeginGetAccessToken();
|
| - void EndGetAccessToken(bool success);
|
| - void BeginRecordGrant();
|
| - void EndRecordGrant(const net::URLFetcher* source);
|
| - void BeginGetChannelId();
|
| - void EndGetChannelId(const net::URLFetcher* source);
|
| -
|
| - void ReportResult(const std::string& channel_id, SetupError error);
|
| -
|
| - static std::string GetErrorString(SetupError error);
|
| - static GURL GetCWSChannelServiceURL();
|
| - static GURL GetOAuth2IssueTokenURL();
|
| - static std::string MakeOAuth2IssueTokenBody(
|
| - const std::string& oauth_client_id, const std::string& extension_id);
|
| - static std::string MakeAuthorizationHeader(const std::string& auth_token);
|
| - static bool ParseCWSChannelServiceResponse(
|
| - const std::string& data, std::string* result);
|
| - // Checks if the user needs to be prompted for login.
|
| - bool ShouldPromptForLogin() const;
|
| - void RegisterForTokenServiceNotifications();
|
| - void UnregisterForTokenServiceNotifications();
|
| -
|
| - Profile* profile_;
|
| - std::string extension_id_;
|
| - std::string client_id_;
|
| - GURL requestor_url_;
|
| - int return_route_id_;
|
| - int callback_id_;
|
| - base::WeakPtr<Delegate> delegate_;
|
| - scoped_ptr<net::URLFetcher> url_fetcher_;
|
| - scoped_ptr<OAuth2AccessTokenFetcher> oauth2_fetcher_;
|
| - scoped_ptr<AppNotifyChannelUI> ui_;
|
| - State state_;
|
| - std::string oauth2_access_token_;
|
| - // Keeps track of whether we have encountered failure in OAuth2 access
|
| - // token generation already. We use this to prevent us from doing an
|
| - // infinite loop of trying to generate access token, if that fails, try
|
| - // to login the user and generate access token, etc.
|
| - bool oauth2_access_token_failure_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AppNotifyChannelSetup);
|
| -};
|
| -
|
| -} // namespace extensions
|
| -
|
| -#endif // CHROME_BROWSER_EXTENSIONS_APP_NOTIFY_CHANNEL_SETUP_H_
|
|
|