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

Side by Side Diff: android_webview/java/src/org/chromium/android_webview/MessagePort.java

Issue 929393003: Rename some postmessage API to make it more meaningful. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address code review Created 5 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.android_webview; 5 package org.chromium.android_webview;
6 6
7 import android.util.Log; 7 import android.util.Log;
8 8
9 /** 9 /**
10 * Represents the MessageChannel MessagePort object. Inspired from 10 * Represents the MessageChannel MessagePort object. Inspired from
(...skipping 19 matching lines...) Expand all
30 * application cannot use a transferred port to post messages. If a transferred port 30 * application cannot use a transferred port to post messages. If a transferred port
31 * receives messages, they will be queued. This state is not visible to embedder app. 31 * receives messages, they will be queued. This state is not visible to embedder app.
32 * 32 *
33 * TODO(sgurun) implement queueing messages while a port is in transfer 33 * TODO(sgurun) implement queueing messages while a port is in transfer
34 * TODO(sgurun) implement freeing resources in content/message_port_service when a port is 34 * TODO(sgurun) implement freeing resources in content/message_port_service when a port is
35 * closed 35 * closed
36 */ 36 */
37 public class MessagePort implements PostMessageSender.PostMessageSenderDelegate { 37 public class MessagePort implements PostMessageSender.PostMessageSenderDelegate {
38 38
39 /** 39 /**
40 * The interface for message handler for receiving messages. Called on a bac kground thread. 40 * The message event handler for receiving messages. Called on a background thread.
41 */ 41 */
42 public static interface MessageHandler { 42 public abstract static class WebEventHandler {
43 void onMessage(String message); 43 public abstract void onMessage(String message);
44 }; 44 };
45 45
46 /** 46 /**
47 * A specialized PostMessageSender for message channel message port. 47 * A specialized PostMessageSender for message channel message port.
48 */ 48 */
49 private static class MessagePortPostMessageSender extends PostMessageSender { 49 private static class MessagePortPostMessageSender extends PostMessageSender {
50 50
51 private MessagePort mSender; 51 private MessagePort mSender;
52 52
53 public MessagePortPostMessageSender(MessagePort sender, AwMessagePortSer vice service) { 53 public MessagePortPostMessageSender(MessagePort sender, AwMessagePortSer vice service) {
54 super(sender, service); 54 super(sender, service);
55 mSender = sender; 55 mSender = sender;
56 } 56 }
57 @Override 57 @Override
58 protected boolean senderIsReady() { 58 protected boolean senderIsReady() {
59 return mSender.isReady(); 59 return mSender.isReady();
60 } 60 }
61 } 61 }
62 62
63 private static final String TAG = "MessagePort"; 63 private static final String TAG = "MessagePort";
64 private static final int PENDING = -1; 64 private static final int PENDING = -1;
65 private int mPortId = PENDING; 65 private int mPortId = PENDING;
66 private MessageHandler mHandler; 66 private WebEventHandler mWebEventHandler;
67 private AwMessagePortService mMessagePortService; 67 private AwMessagePortService mMessagePortService;
68 private boolean mClosed; 68 private boolean mClosed;
69 private boolean mTransferred; 69 private boolean mTransferred;
70 private MessagePortPostMessageSender mPostMessageSender; 70 private MessagePortPostMessageSender mPostMessageSender;
71 71
72 public MessagePort(AwMessagePortService messagePortService) { 72 public MessagePort(AwMessagePortService messagePortService) {
73 mMessagePortService = messagePortService; 73 mMessagePortService = messagePortService;
74 mPostMessageSender = new MessagePortPostMessageSender(this, mMessagePort Service); 74 mPostMessageSender = new MessagePortPostMessageSender(this, mMessagePort Service);
75 mMessagePortService.addObserver(mPostMessageSender); 75 mMessagePortService.addObserver(mPostMessageSender);
76 } 76 }
(...skipping 24 matching lines...) Expand all
101 } 101 }
102 102
103 public boolean isTransferred() { 103 public boolean isTransferred() {
104 return mTransferred; 104 return mTransferred;
105 } 105 }
106 106
107 public void setTransferred() { 107 public void setTransferred() {
108 mTransferred = true; 108 mTransferred = true;
109 } 109 }
110 110
111 public void setMessageHandler(MessageHandler handler) { 111 public void setWebEventHandler(WebEventHandler webEventHandler) {
112 mHandler = handler; 112 mWebEventHandler = webEventHandler;
113 } 113 }
114 114
115 public void onMessage(String message) { 115 public void onMessage(String message) {
116 if (isClosed()) { 116 if (isClosed()) {
117 Log.w(TAG, "Port [" + mPortId + "] received message in closed state" ); 117 Log.w(TAG, "Port [" + mPortId + "] received message in closed state" );
118 return; 118 return;
119 } 119 }
120 if (mHandler == null) { 120 if (mWebEventHandler == null) {
121 Log.w(TAG, "No handler set for port [" + mPortId + "], dropping mess age " + message); 121 Log.w(TAG, "No handler set for port [" + mPortId + "], dropping mess age " + message);
122 return; 122 return;
123 } 123 }
124 mHandler.onMessage(message); 124 mWebEventHandler.onMessage(message);
125 } 125 }
126 126
127 public void postMessage(String message, MessagePort[] msgPorts) throws Illeg alStateException { 127 public void postMessage(String message, MessagePort[] msgPorts) throws Illeg alStateException {
128 if (isClosed() || isTransferred()) { 128 if (isClosed() || isTransferred()) {
129 throw new IllegalStateException("Port is already closed or transferr ed"); 129 throw new IllegalStateException("Port is already closed or transferr ed");
130 } 130 }
131 if (msgPorts != null) { 131 if (msgPorts != null) {
132 for (MessagePort port : msgPorts) { 132 for (MessagePort port : msgPorts) {
133 if (port.portId() == mPortId) { 133 if (port.portId() == mPortId) {
134 throw new IllegalStateException("Source port cannot be trans ferred"); 134 throw new IllegalStateException("Source port cannot be trans ferred");
135 } 135 }
136 } 136 }
137 } 137 }
138 mPostMessageSender.postMessage(null, message, null, msgPorts); 138 mPostMessageSender.postMessage(null, message, null, msgPorts);
139 } 139 }
140 140
141 @Override 141 @Override
142 public void postMessageToWeb(String frameName, String message, String target Origin, 142 public void postMessageToWeb(String frameName, String message, String target Origin,
143 int[] sentPortIds) { 143 int[] sentPortIds) {
144 mMessagePortService.postMessage(mPortId, message, sentPortIds); 144 mMessagePortService.postMessage(mPortId, message, sentPortIds);
145 } 145 }
146 } 146 }
OLDNEW
« no previous file with comments | « no previous file | android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698