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

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

Issue 811623005: Refactoring DevToolsBridgeServer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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/GCDNotificationHandler.java
diff --git a/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/GCDNotificationHandler.java b/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/GCDNotificationHandler.java
index 30197885c0c28bce8f53a2241e7c15f9f64925f8..fdf5de9bda60d48f6d0886e28826801db234b426 100644
--- a/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/GCDNotificationHandler.java
+++ b/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/GCDNotificationHandler.java
@@ -66,6 +66,25 @@ public class GCDNotificationHandler {
completionHandler.run();
}
+ public void updateCloudMessagesId(final String gcmChannelId, final Runnable completionHandler) {
+ final InstanceCredential credential = InstanceCredential.get(mServer.getPreferences());
+ if (credential == null) return;
+
+ mIOExecutor.submit(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ mClientFactory.newGCDClient(getAccessToken(credential))
+ .patchInstanceGCMChannel(credential.id, gcmChannelId);
+ } catch (Exception e) {
+ Log.e(TAG, "Failure when updating GCM channel id", e);
+ } finally {
+ completionHandler.run();
+ }
+ }
+ });
+ }
+
private void handle(Notification notification, Runnable completionHandler) {
if (notification == null) {
// Unsupported notification type. Ignore.
@@ -111,6 +130,16 @@ public class GCDNotificationHandler {
}
}
+ private String getAccessToken(InstanceCredential credential) throws IOException {
+ // Called on IO executor.
+ // TODO(serya): mOAuthResult should be persistent.
+ if (mOAuthResult == null) {
+ mOAuthResult = mClientFactory.newOAuthClient().authenticate(
+ credential.secret);
+ }
+ return mOAuthResult.accessToken;
+ }
+
private final class Responder implements Runnable {
private final Command mCommand;
private final InstanceCredential mCredential;
@@ -138,13 +167,8 @@ public class GCDNotificationHandler {
return;
}
try {
- // TODO(serya): mOAuthResult should be persistent.
- if (mOAuthResult == null) {
- mOAuthResult = mClientFactory.newOAuthClient().authenticate(
- mCredential.secret);
- }
- mClientFactory.newGCDClient(mOAuthResult.accessToken).patchCommand(mCommand);
- } catch (IOException e) {
+ mClientFactory.newGCDClient(getAccessToken(mCredential)).patchCommand(mCommand);
+ } catch (Exception e) {
// TODO(serya): Handle authorization exception.
Log.e(TAG, "Failure when patching command", e);
}

Powered by Google App Engine
This is Rietveld 408576698