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

Unified Diff: google_apis/gcm/gcm_client_impl.h

Issue 310973002: Move GCMClient related files to gcm_driver component (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync Created 6 years, 6 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
« no previous file with comments | « google_apis/gcm/gcm_client.cc ('k') | google_apis/gcm/gcm_client_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: google_apis/gcm/gcm_client_impl.h
diff --git a/google_apis/gcm/gcm_client_impl.h b/google_apis/gcm/gcm_client_impl.h
deleted file mode 100644
index e543d73bc4facde4555e3f6a951a80cc51640a3c..0000000000000000000000000000000000000000
--- a/google_apis/gcm/gcm_client_impl.h
+++ /dev/null
@@ -1,301 +0,0 @@
-// Copyright 2013 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 GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_
-#define GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_
-
-#include <map>
-#include <string>
-#include <vector>
-
-#include "base/compiler_specific.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "base/stl_util.h"
-#include "google_apis/gcm/base/mcs_message.h"
-#include "google_apis/gcm/engine/gcm_store.h"
-#include "google_apis/gcm/engine/gservices_settings.h"
-#include "google_apis/gcm/engine/mcs_client.h"
-#include "google_apis/gcm/engine/registration_request.h"
-#include "google_apis/gcm/engine/unregistration_request.h"
-#include "google_apis/gcm/gcm_client.h"
-#include "google_apis/gcm/monitoring/gcm_stats_recorder_impl.h"
-#include "google_apis/gcm/protocol/android_checkin.pb.h"
-#include "google_apis/gcm/protocol/checkin.pb.h"
-#include "net/base/net_log.h"
-#include "net/url_request/url_request_context_getter.h"
-
-class GURL;
-
-namespace base {
-class Clock;
-class Time;
-} // namespace base
-
-namespace mcs_proto {
-class DataMessageStanza;
-} // namespace mcs_proto
-
-namespace net {
-class HttpNetworkSession;
-} // namespace net
-
-namespace gcm {
-
-class CheckinRequest;
-class ConnectionFactory;
-class GCMClientImplTest;
-
-// Helper class for building GCM internals. Allows tests to inject fake versions
-// as necessary.
-class GCM_EXPORT GCMInternalsBuilder {
- public:
- GCMInternalsBuilder();
- virtual ~GCMInternalsBuilder();
-
- virtual scoped_ptr<base::Clock> BuildClock();
- virtual scoped_ptr<MCSClient> BuildMCSClient(
- const std::string& version,
- base::Clock* clock,
- ConnectionFactory* connection_factory,
- GCMStore* gcm_store,
- GCMStatsRecorder* recorder);
- virtual scoped_ptr<ConnectionFactory> BuildConnectionFactory(
- const std::vector<GURL>& endpoints,
- const net::BackoffEntry::Policy& backoff_policy,
- scoped_refptr<net::HttpNetworkSession> network_session,
- net::NetLog* net_log,
- GCMStatsRecorder* recorder);
-};
-
-// Implements the GCM Client. It is used to coordinate MCS Client (communication
-// with MCS) and other pieces of GCM infrastructure like Registration and
-// Checkins. It also allows for registering user delegates that host
-// applications that send and receive messages.
-class GCM_EXPORT GCMClientImpl
- : public GCMClient, public GCMStatsRecorder::Delegate {
- public:
- explicit GCMClientImpl(scoped_ptr<GCMInternalsBuilder> internals_builder);
- virtual ~GCMClientImpl();
-
- // Overridden from GCMClient:
- virtual void Initialize(
- const ChromeBuildInfo& chrome_build_info,
- const base::FilePath& store_path,
- const std::vector<std::string>& account_ids,
- const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner,
- const scoped_refptr<net::URLRequestContextGetter>&
- url_request_context_getter,
- scoped_ptr<Encryptor> encryptor,
- GCMClient::Delegate* delegate) OVERRIDE;
- virtual void Start() OVERRIDE;
- virtual void Stop() OVERRIDE;
- virtual void CheckOut() OVERRIDE;
- virtual void Register(const std::string& app_id,
- const std::vector<std::string>& sender_ids) OVERRIDE;
- virtual void Unregister(const std::string& app_id) OVERRIDE;
- virtual void Send(const std::string& app_id,
- const std::string& receiver_id,
- const OutgoingMessage& message) OVERRIDE;
- virtual void SetRecording(bool recording) OVERRIDE;
- virtual void ClearActivityLogs() OVERRIDE;
- virtual GCMStatistics GetStatistics() const OVERRIDE;
- virtual void OnActivityRecorded() OVERRIDE;
-
- private:
- // State representation of the GCMClient.
- // Any change made to this enum should have corresponding change in the
- // GetStateString(...) function.
- enum State {
- // Uninitialized.
- UNINITIALIZED,
- // Initialized,
- INITIALIZED,
- // GCM store loading is in progress.
- LOADING,
- // Initial device checkin is in progress.
- INITIAL_DEVICE_CHECKIN,
- // Ready to accept requests.
- READY,
- };
-
- // The check-in info for the user. Returned by the server.
- struct GCM_EXPORT CheckinInfo {
- CheckinInfo() : android_id(0), secret(0) {}
- bool IsValid() const { return android_id != 0 && secret != 0; }
- void Reset() {
- android_id = 0;
- secret = 0;
- }
-
- uint64 android_id;
- uint64 secret;
- };
-
- // Collection of pending registration requests. Keys are app IDs, while values
- // are pending registration requests to obtain a registration ID for
- // requesting application.
- typedef std::map<std::string, RegistrationRequest*>
- PendingRegistrationRequests;
-
- // Collection of pending unregistration requests. Keys are app IDs, while
- // values are pending unregistration requests to disable the registration ID
- // currently assigned to the application.
- typedef std::map<std::string, UnregistrationRequest*>
- PendingUnregistrationRequests;
-
- friend class GCMClientImplTest;
-
- // Returns text representation of the enum State.
- std::string GetStateString() const;
-
- // Callbacks for the MCSClient.
- // Receives messages and dispatches them to relevant user delegates.
- void OnMessageReceivedFromMCS(const gcm::MCSMessage& message);
- // Receives confirmation of sent messages or information about errors.
- void OnMessageSentToMCS(int64 user_serial_number,
- const std::string& app_id,
- const std::string& message_id,
- MCSClient::MessageSendStatus status);
- // Receives information about mcs_client_ errors.
- void OnMCSError();
-
- // Runs after GCM Store load is done to trigger continuation of the
- // initialization.
- void OnLoadCompleted(scoped_ptr<GCMStore::LoadResult> result);
- // Initializes mcs_client_, which handles the connection to MCS.
- void InitializeMCSClient(scoped_ptr<GCMStore::LoadResult> result);
- // Complets the first time device checkin.
- void OnFirstTimeDeviceCheckinCompleted(const CheckinInfo& checkin_info);
- // Starts a login on mcs_client_.
- void StartMCSLogin();
- // Resets state to before initialization.
- void ResetState();
- // Sets state to ready. This will initiate the MCS login and notify the
- // delegates.
- void OnReady();
-
- // Starts a first time device checkin.
- void StartCheckin();
- // Completes the device checkin request by parsing the |checkin_response|.
- // Function also cleans up the pending checkin.
- void OnCheckinCompleted(
- const checkin_proto::AndroidCheckinResponse& checkin_response);
-
- // Callback passed to GCMStore::SetGServicesSettings.
- void SetGServicesSettingsCallback(bool success);
-
- // Schedules next periodic device checkin and makes sure there is at most one
- // pending checkin at a time. This function is meant to be called after a
- // successful checkin.
- void SchedulePeriodicCheckin();
- // Gets the time until next checkin.
- base::TimeDelta GetTimeToNextCheckin() const;
- // Callback for setting last checkin time in the |gcm_store_|.
- void SetLastCheckinTimeCallback(bool success);
-
- // Callback for persisting device credentials in the |gcm_store_|.
- void SetDeviceCredentialsCallback(bool success);
-
- // Callback for persisting registration info in the |gcm_store_|.
- void UpdateRegistrationCallback(bool success);
-
- // Completes the registration request.
- void OnRegisterCompleted(const std::string& app_id,
- const std::vector<std::string>& sender_ids,
- RegistrationRequest::Status status,
- const std::string& registration_id);
-
- // Completes the unregistration request.
- void OnUnregisterCompleted(const std::string& app_id,
- UnregistrationRequest::Status status);
-
- // Completes the GCM store destroy request.
- void OnGCMStoreDestroyed(bool success);
-
- // Handles incoming data message and dispatches it the delegate of this class.
- void HandleIncomingMessage(const gcm::MCSMessage& message);
-
- // Fires OnMessageReceived event on the delegate of this class, based on the
- // details in |data_message_stanza| and |message_data|.
- void HandleIncomingDataMessage(
- const mcs_proto::DataMessageStanza& data_message_stanza,
- MessageData& message_data);
-
- // Fires OnMessageSendError event on the delegate of this calss, based on the
- // details in |data_message_stanza| and |message_data|.
- void HandleIncomingSendError(
- const mcs_proto::DataMessageStanza& data_message_stanza,
- MessageData& message_data);
-
- // Builder for the GCM internals (mcs client, etc.).
- scoped_ptr<GCMInternalsBuilder> internals_builder_;
-
- // Recorder that logs GCM activities.
- GCMStatsRecorderImpl recorder_;
-
- // State of the GCM Client Implementation.
- State state_;
-
- GCMClient::Delegate* delegate_;
-
- // Device checkin info (android ID and security token used by device).
- CheckinInfo device_checkin_info_;
-
- // Clock used for timing of retry logic. Passed in for testing. Owned by
- // GCMClientImpl.
- scoped_ptr<base::Clock> clock_;
-
- // Information about the chrome build.
- // TODO(fgorski): Check if it can be passed in constructor and made const.
- ChromeBuildInfo chrome_build_info_;
-
- // Persistent data store for keeping device credentials, messages and user to
- // serial number mappings.
- scoped_ptr<GCMStore> gcm_store_;
-
- scoped_refptr<net::HttpNetworkSession> network_session_;
- net::BoundNetLog net_log_;
- scoped_ptr<ConnectionFactory> connection_factory_;
- scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
-
- // Controls receiving and sending of packets and reliable message queueing.
- scoped_ptr<MCSClient> mcs_client_;
-
- scoped_ptr<CheckinRequest> checkin_request_;
- std::vector<std::string> account_ids_;
-
- // Cached registration info.
- RegistrationInfoMap registrations_;
-
- // Currently pending registration requests. GCMClientImpl owns the
- // RegistrationRequests.
- PendingRegistrationRequests pending_registration_requests_;
- STLValueDeleter<PendingRegistrationRequests>
- pending_registration_requests_deleter_;
-
- // Currently pending unregistration requests. GCMClientImpl owns the
- // UnregistrationRequests.
- PendingUnregistrationRequests pending_unregistration_requests_;
- STLValueDeleter<PendingUnregistrationRequests>
- pending_unregistration_requests_deleter_;
-
- // G-services settings that were provided by MCS.
- GServicesSettings gservices_settings_;
-
- // Time of the last successful checkin.
- base::Time last_checkin_time_;
-
- // Factory for creating references when scheduling periodic checkin.
- base::WeakPtrFactory<GCMClientImpl> periodic_checkin_ptr_factory_;
-
- // Factory for creating references in callbacks.
- base::WeakPtrFactory<GCMClientImpl> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(GCMClientImpl);
-};
-
-} // namespace gcm
-
-#endif // GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_
« no previous file with comments | « google_apis/gcm/gcm_client.cc ('k') | google_apis/gcm/gcm_client_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698