Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1122)

Unified Diff: chrome/browser/extensions/app_notify_channel_setup.h

Issue 12680004: Remove chrome/ code to handle App Notifications (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix merge conflicts. Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_
« no previous file with comments | « chrome/browser/extensions/app_notification_test_util.cc ('k') | chrome/browser/extensions/app_notify_channel_setup.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698