Hook up the Push API with GCM's new ability to own encryption keys.

This CL finishes implementing propagation of the "curve25519dh" attribute
of the PushSubscription interface of the Push API. The public key will be
provided by the GCM Driver, which internally uses the (new) GCMKeyStore.

Encrypted messages cannot yet be received by GCM - that work remains. The
functionality introduced in this CL is also still guarded behind the
"--enable-push-message-payload" command line flag.

BUG=486040

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

Cr-Commit-Position: refs/heads/master@{#340697}
diff --git a/components/gcm_driver/gcm_driver_android.h b/components/gcm_driver/gcm_driver_android.h
index 5614ba7f..c894973c8 100644
--- a/components/gcm_driver/gcm_driver_android.h
+++ b/components/gcm_driver/gcm_driver_android.h
@@ -10,14 +10,22 @@
 #include "base/android/scoped_java_ref.h"
 #include "base/compiler_specific.h"
 #include "base/macros.h"
+#include "base/memory/ref_counted.h"
 #include "components/gcm_driver/gcm_driver.h"
 
+namespace base {
+class FilePath;
+class SequencedTaskRunner;
+}
+
 namespace gcm {
 
 // GCMDriver implementation for Android, using Android GCM APIs.
 class GCMDriverAndroid : public GCMDriver {
  public:
-  GCMDriverAndroid();
+  GCMDriverAndroid(
+      const base::FilePath& store_path,
+      const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner);
   ~GCMDriverAndroid() override;
 
   // Methods called from Java via JNI: