[GCM] Exposing persistence of account mappings in GCM Driver

* Enables GCMAccountMapper (patches to come) to persist AccountMappings
  in GCMStore by calling GCMDriver.
* Passes UpdateAccountMapping and RemoveAccountMapping through:
  * GCMDriverDesktop
  * GCMDriverDesktop::IOWorker
  * GCMClientImpl

BUG=374969

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

Cr-Commit-Position: refs/heads/master@{#290928}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290928 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/components/gcm_driver/gcm_client.h b/components/gcm_driver/gcm_client.h
index e5082c5..8a7f7b2 100644
--- a/components/gcm_driver/gcm_client.h
+++ b/components/gcm_driver/gcm_client.h
@@ -30,6 +30,7 @@
 namespace gcm {
 
 class Encryptor;
+struct AccountMapping;
 
 // Interface that encapsulates the network communications with the Google Cloud
 // Messaging server. This interface is not supposed to be thread-safe.
@@ -276,6 +277,13 @@
   // |account_tokens| maps email addresses to OAuth2 access tokens.
   virtual void SetAccountsForCheckin(
       const std::map<std::string, std::string>& account_tokens) = 0;
+
+  // Persists the |account_mapping| in the store.
+  virtual void UpdateAccountMapping(const AccountMapping& account_mapping) = 0;
+
+  // Removes the account mapping related to |account_id| from the persistent
+  // store.
+  virtual void RemoveAccountMapping(const std::string& account_id) = 0;
 };
 
 }  // namespace gcm