OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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.test; | 5 package org.chromium.android_webview.test; |
6 | 6 |
7 import android.os.Build; | 7 import android.os.Build; |
8 import android.test.suitebuilder.annotation.SmallTest; | 8 import android.test.suitebuilder.annotation.SmallTest; |
9 | 9 |
10 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout; | 10 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout; |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 @Feature({"AndroidWebView", "Android-PostMessage"}) | 315 @Feature({"AndroidWebView", "Android-PostMessage"}) |
316 public void testReceiveMessageInBackgroundThread() throws Throwable { | 316 public void testReceiveMessageInBackgroundThread() throws Throwable { |
317 loadPage(TEST_PAGE); | 317 loadPage(TEST_PAGE); |
318 final ChannelContainer channelContainer = new ChannelContainer(); | 318 final ChannelContainer channelContainer = new ChannelContainer(); |
319 runTestOnUiThread(new Runnable() { | 319 runTestOnUiThread(new Runnable() { |
320 @Override | 320 @Override |
321 public void run() { | 321 public void run() { |
322 MessagePort[] channel = mAwContents.createMessageChannel(); | 322 MessagePort[] channel = mAwContents.createMessageChannel(); |
323 // verify communication from JS to Java. | 323 // verify communication from JS to Java. |
324 channelContainer.set(channel); | 324 channelContainer.set(channel); |
325 channel[0].setMessageHandler(new MessagePort.MessageHandler() { | 325 channel[0].setWebEventHandler(new MessagePort.WebEventHandler()
{ |
326 @Override | 326 @Override |
327 public void onMessage(String message) { | 327 public void onMessage(String message) { |
328 channelContainer.setMessage(message); | 328 channelContainer.setMessage(message); |
329 } | 329 } |
330 }); | 330 }); |
331 mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer
.getBaseUrl(), | 331 mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer
.getBaseUrl(), |
332 new MessagePort[]{channel[1]}); | 332 new MessagePort[]{channel[1]}); |
333 } | 333 } |
334 }); | 334 }); |
335 mMessageObject.waitForMessage(); | 335 mMessageObject.waitForMessage(); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 public MessagePort[] call() { | 397 public MessagePort[] call() { |
398 return mAwContents.createMessageChannel(); | 398 return mAwContents.createMessageChannel(); |
399 } | 399 } |
400 }); | 400 }); |
401 | 401 |
402 waitUntilPortReady(channel[0]); | 402 waitUntilPortReady(channel[0]); |
403 waitUntilPortReady(channel[1]); | 403 waitUntilPortReady(channel[1]); |
404 runTestOnUiThread(new Runnable() { | 404 runTestOnUiThread(new Runnable() { |
405 @Override | 405 @Override |
406 public void run() { | 406 public void run() { |
407 channel[0].setMessageHandler(new MessagePort.MessageHandler() { | 407 channel[0].setWebEventHandler(new MessagePort.WebEventHandler()
{ |
408 @Override | 408 @Override |
409 public void onMessage(String message) { | 409 public void onMessage(String message) { |
410 channelContainer.setMessage(message); | 410 channelContainer.setMessage(message); |
411 } | 411 } |
412 }); | 412 }); |
413 mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer
.getBaseUrl(), | 413 mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer
.getBaseUrl(), |
414 new MessagePort[]{channel[1]}); | 414 new MessagePort[]{channel[1]}); |
415 channel[0].postMessage(HELLO, null); | 415 channel[0].postMessage(HELLO, null); |
416 } | 416 } |
417 }); | 417 }); |
418 // wait for the asynchronous response from JS | 418 // wait for the asynchronous response from JS |
419 channelContainer.waitForMessage(); | 419 channelContainer.waitForMessage(); |
420 assertEquals(HELLO + JS_MESSAGE, channelContainer.getMessage()); | 420 assertEquals(HELLO + JS_MESSAGE, channelContainer.getMessage()); |
421 } | 421 } |
422 | 422 |
423 // Verify that a message port can be used immediately (even if it is in | 423 // Verify that a message port can be used immediately (even if it is in |
424 // pending state) after creation. In particular make sure the message port c
an be | 424 // pending state) after creation. In particular make sure the message port c
an be |
425 // transferred to JS and full communication can happen on it. | 425 // transferred to JS and full communication can happen on it. |
426 // Do this by sending a message to JS and let it echo'ing the message with | 426 // Do this by sending a message to JS and let it echo'ing the message with |
427 // some text prepended to it. | 427 // some text prepended to it. |
428 @SmallTest | 428 @SmallTest |
429 @Feature({"AndroidWebView", "Android-PostMessage"}) | 429 @Feature({"AndroidWebView", "Android-PostMessage"}) |
430 public void testMessageChannelUsingPendingPort() throws Throwable { | 430 public void testMessageChannelUsingPendingPort() throws Throwable { |
431 final ChannelContainer channelContainer = new ChannelContainer(); | 431 final ChannelContainer channelContainer = new ChannelContainer(); |
432 loadPage(ECHO_PAGE); | 432 loadPage(ECHO_PAGE); |
433 runTestOnUiThread(new Runnable() { | 433 runTestOnUiThread(new Runnable() { |
434 @Override | 434 @Override |
435 public void run() { | 435 public void run() { |
436 MessagePort[] channel = mAwContents.createMessageChannel(); | 436 MessagePort[] channel = mAwContents.createMessageChannel(); |
437 channel[0].setMessageHandler(new MessagePort.MessageHandler() { | 437 channel[0].setWebEventHandler(new MessagePort.WebEventHandler()
{ |
438 @Override | 438 @Override |
439 public void onMessage(String message) { | 439 public void onMessage(String message) { |
440 channelContainer.setMessage(message); | 440 channelContainer.setMessage(message); |
441 } | 441 } |
442 }); | 442 }); |
443 mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer
.getBaseUrl(), | 443 mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer
.getBaseUrl(), |
444 new MessagePort[]{channel[1]}); | 444 new MessagePort[]{channel[1]}); |
445 channel[0].postMessage(HELLO, null); | 445 channel[0].postMessage(HELLO, null); |
446 } | 446 } |
447 }); | 447 }); |
448 // Wait for the asynchronous response from JS. | 448 // Wait for the asynchronous response from JS. |
449 channelContainer.waitForMessage(); | 449 channelContainer.waitForMessage(); |
450 assertEquals(HELLO + JS_MESSAGE, channelContainer.getMessage()); | 450 assertEquals(HELLO + JS_MESSAGE, channelContainer.getMessage()); |
451 } | 451 } |
452 | 452 |
453 // Verify that a message port can be used for message transfer when both | 453 // Verify that a message port can be used for message transfer when both |
454 // ports are owned by same Webview. | 454 // ports are owned by same Webview. |
455 @SmallTest | 455 @SmallTest |
456 @Feature({"AndroidWebView", "Android-PostMessage"}) | 456 @Feature({"AndroidWebView", "Android-PostMessage"}) |
457 public void testMessageChannelCommunicationWithinWebView() throws Throwable
{ | 457 public void testMessageChannelCommunicationWithinWebView() throws Throwable
{ |
458 final ChannelContainer channelContainer = new ChannelContainer(); | 458 final ChannelContainer channelContainer = new ChannelContainer(); |
459 loadPage(ECHO_PAGE); | 459 loadPage(ECHO_PAGE); |
460 runTestOnUiThread(new Runnable() { | 460 runTestOnUiThread(new Runnable() { |
461 @Override | 461 @Override |
462 public void run() { | 462 public void run() { |
463 MessagePort[] channel = mAwContents.createMessageChannel(); | 463 MessagePort[] channel = mAwContents.createMessageChannel(); |
464 channel[1].setMessageHandler(new MessagePort.MessageHandler() { | 464 channel[1].setWebEventHandler(new MessagePort.WebEventHandler()
{ |
465 @Override | 465 @Override |
466 public void onMessage(String message) { | 466 public void onMessage(String message) { |
467 channelContainer.setMessage(message); | 467 channelContainer.setMessage(message); |
468 } | 468 } |
469 }); | 469 }); |
470 channel[0].postMessage(HELLO, null); | 470 channel[0].postMessage(HELLO, null); |
471 } | 471 } |
472 }); | 472 }); |
473 // Wait for the asynchronous response from JS. | 473 // Wait for the asynchronous response from JS. |
474 channelContainer.waitForMessage(); | 474 channelContainer.waitForMessage(); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 } | 559 } |
560 @Override | 560 @Override |
561 public void close() { | 561 public void close() { |
562 mPort.close(); | 562 mPort.close(); |
563 } | 563 } |
564 @Override | 564 @Override |
565 public boolean isClosed() { | 565 public boolean isClosed() { |
566 return mPort.isClosed(); | 566 return mPort.isClosed(); |
567 } | 567 } |
568 @Override | 568 @Override |
569 public void setMessageHandler(MessageHandler handler) { | 569 public void setWebEventHandler(WebEventHandler handler) { |
570 mPort.setMessageHandler(handler); | 570 mPort.setWebEventHandler(handler); |
571 } | 571 } |
572 @Override | 572 @Override |
573 public void onMessage(String message) { | 573 public void onMessage(String message) { |
574 mPort.onMessage(message); | 574 mPort.onMessage(message); |
575 } | 575 } |
576 @Override | 576 @Override |
577 public void postMessage(String message, MessagePort[] msgPorts) throws | 577 public void postMessage(String message, MessagePort[] msgPorts) throws |
578 IllegalStateException { | 578 IllegalStateException { |
579 mPort.postMessage(message, msgPorts); | 579 mPort.postMessage(message, msgPorts); |
580 } | 580 } |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
651 public void run() { | 651 public void run() { |
652 MessagePort[] channel = mAwContents.createMessageChannel(); | 652 MessagePort[] channel = mAwContents.createMessageChannel(); |
653 mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer
.getBaseUrl(), | 653 mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer
.getBaseUrl(), |
654 new MessagePort[]{channel[0], channel[1]}); | 654 new MessagePort[]{channel[0], channel[1]}); |
655 } | 655 } |
656 }); | 656 }); |
657 mMessageObject.waitForMessage(); | 657 mMessageObject.waitForMessage(); |
658 assertEquals(WORKER_MESSAGE, mMessageObject.getData()); | 658 assertEquals(WORKER_MESSAGE, mMessageObject.getData()); |
659 } | 659 } |
660 } | 660 } |
OLD | NEW |