[GCM] Make GCMProfileService create and own GCMClient

We're switching to one GCMClient per profile.

BUG=284553
TEST=existing tests

Review URL: https://codereview.chromium.org/149803009

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249824 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/services/gcm/gcm_client_mock.cc b/chrome/browser/services/gcm/gcm_client_mock.cc
index e2e3bc3..4945a27b 100644
--- a/chrome/browser/services/gcm/gcm_client_mock.cc
+++ b/chrome/browser/services/gcm/gcm_client_mock.cc
@@ -25,14 +25,22 @@
 
 }  // namespace
 
-GCMClientMock::GCMClientMock()
-    : ready_(true),
+GCMClientMock::GCMClientMock(Status status)
+    : status_(status),
       simulate_server_error_(false) {
 }
 
 GCMClientMock::~GCMClientMock() {
 }
 
+void GCMClientMock::Initialize(
+    const checkin_proto::ChromeBuildProto& chrome_build_proto,
+    const base::FilePath& store_path,
+    const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner,
+    const scoped_refptr<net::URLRequestContextGetter>&
+        url_request_context_getter) {
+}
+
 void GCMClientMock::SetUserDelegate(const std::string& username,
                                     Delegate* delegate) {
   DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
@@ -98,7 +106,7 @@
 }
 
 bool GCMClientMock::IsReady() const {
-  return ready_;
+  return status_ == READY;
 }
 
 void GCMClientMock::ReceiveMessage(const std::string& username,
@@ -129,15 +137,11 @@
                  app_id));
 }
 
-void GCMClientMock::SetReady(bool ready) {
+void GCMClientMock::SetReady() {
   DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+  DCHECK_EQ(status_, NOT_READY);
 
-  if (ready == ready_)
-    return;
-  ready_ = ready;
-
-  if (!ready_)
-    return;
+  status_ = READY;
   content::BrowserThread::PostTask(
       content::BrowserThread::IO,
       FROM_HERE,