Added support for adding Google accounts on platforms other than Android such as FNL or Goobuntu. It also persists the refresh tokens using files service, which are later used for fetching access tokens without a re-auth.

Also, retrieves both GaiaID and user's email using OpenIDConnect based idtokens.

Bug# https://github.com/domokit/mojo/issues/600

Related design doc:
https://docs.google.com/document/d/1-LWlQl-9iInkeyuP0EoPhehDvyz68FCK0w_pfzZaZwU/edit

R=qsr@chromium.org

Review URL: https://codereview.chromium.org/1466733002 .
diff --git a/mojo/data_pipe_utils/data_pipe_utils.cc b/mojo/data_pipe_utils/data_pipe_utils.cc
index e7e1df4..1084db3 100644
--- a/mojo/data_pipe_utils/data_pipe_utils.cc
+++ b/mojo/data_pipe_utils/data_pipe_utils.cc
@@ -112,5 +112,18 @@
   }
 }
 
+ScopedDataPipeConsumerHandle WriteStringToConsumerHandle(
+    const std::string& source) {
+  TRACE_EVENT0("data_pipe_utils", "WriteStringToConsumerHandle");
+  static const size_t max_buffer_size = 2 * 1024 * 1024;  // 2MB
+  CHECK_LE(static_cast<uint32_t>(source.size()), max_buffer_size);
+  MojoCreateDataPipeOptions options = {sizeof(MojoCreateDataPipeOptions),
+                                       MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE,
+                                       1, source.size()};
+  DataPipe pipe(options);
+  BlockingCopyFromString(source, pipe.producer_handle.Pass());
+  return pipe.consumer_handle.Pass();
+}
+
 }  // namespace common
 }  // namespace mojo