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

Unified Diff: components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/gcd/MessageReader.java

Issue 677843006: Registration of DevTools bridge in GCD. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gcm-signaling
Patch Set: Created 6 years, 2 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
Index: components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/gcd/MessageReader.java
diff --git a/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/gcd/MessageReader.java b/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/gcd/MessageReader.java
new file mode 100644
index 0000000000000000000000000000000000000000..382979dbe0a1e5770943ffa2450d144a355feb77
--- /dev/null
+++ b/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/gcd/MessageReader.java
@@ -0,0 +1,84 @@
+// Copyright 2014 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.
+
+package org.chromium.components.devtools_bridge.gcd;
+
+import android.util.JsonReader;
+
+import java.io.IOException;
+
+/**
+ * Helper class for parsing JSON-encoded GCD messages (HTTP responses and GCM notifications) used
+ * in the DevTools bridge.
+ */
+public final class MessageReader {
+ private final JsonReader mReader;
+
+ public MessageReader(JsonReader reader) {
+ mReader = reader;
+ }
+
+ /**
+ * Reads id from a registration ticket.
+ */
+ public String readTicketId() throws IOException {
+ return new TicketReader().readId();
+ }
+
+ /**
+ * Reads credentials from finalized registration ticket.
+ */
+ public InstanceCredential readInstanceCredential() throws IOException {
+ return new TicketReader().readCredential();
+ }
+
+ private abstract class ObjectReader {
+ public final void readObject() throws IOException {
+ mReader.beginObject();
+ while (mReader.hasNext()) {
+ readItem(mReader.nextName());
+ }
+ mReader.endObject();
+ }
+
+ protected void readItem(String name) throws IOException {
+ mReader.skipValue();
+ }
+ }
+
+ private class TicketReader extends ObjectReader {
+ private String mId;
+ private String mDeviceId;
+ private String mDeviceSecret;
+
+ public String readId() throws IOException {
+ readObject();
+ if (mId == null) {
+ throw new IllegalArgumentException();
+ }
+ return mId;
+ }
+
+ public InstanceCredential readCredential() throws IOException {
+ readObject();
+ if (mDeviceId == null || mDeviceSecret == null) {
+ throw new IllegalArgumentException();
+ }
+ return new InstanceCredential(mDeviceId, mDeviceSecret);
+ }
+
+ @Override
+ protected void readItem(String name) throws IOException {
+ if (name.equals("id")) {
+ mId = mReader.nextString();
+ } else if (name.equals("deviceId")) {
+ mDeviceId = mReader.nextString();
+ } else if (name.equals("robotAccountAuthorizationCode")) {
+ mDeviceSecret = mReader.nextString();
+ } else {
+ super.readItem(name);
+ }
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698