It's used to expose Android Java objects via sync IPC. Apparently for WebView as well as tests. More detail to be added later.
design doc: https://docs.google.com/document/d/1T8Zj_gZK7jHsy80Etk-Rw4hXMIW4QeaTtXjy5ZKP3X0/edit
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2fbb8aa24332074ec8c6ad7b34fb3b3b96b6faa3 commit 2fbb8aa24332074ec8c6ad7b34fb3b3b96b6faa3 Author: Jeremy Roman <jbroman@chromium.org> Date: Mon Jan 22 20:01:27 2018 [remoteobjects] Begin implementation outline for Mojoified remote objects. Implementation will be fleshed out in subsequent CLs. This is a minimum unit-testable beginning. Bug: 794320 Change-Id: I8852feb21e13f0bd0cd92a78afeec82ae8cd841d Reviewed-on: https://chromium-review.googlesource.com/871980 Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Bo <boliu@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#530959} [modify] https://crrev.com/2fbb8aa24332074ec8c6ad7b34fb3b3b96b6faa3/content/public/android/BUILD.gn [add] https://crrev.com/2fbb8aa24332074ec8c6ad7b34fb3b3b96b6faa3/content/public/android/java/src/org/chromium/content/browser/remoteobjects/README.md [add] https://crrev.com/2fbb8aa24332074ec8c6ad7b34fb3b3b96b6faa3/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [add] https://crrev.com/2fbb8aa24332074ec8c6ad7b34fb3b3b96b6faa3/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/2fbb8aa24332074ec8c6ad7b34fb3b3b96b6faa3/third_party/WebKit/public/BUILD.gn [add] https://crrev.com/2fbb8aa24332074ec8c6ad7b34fb3b3b96b6faa3/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b3237561d68b4d2a4bfc6cacadcb8985093d62d1 commit b3237561d68b4d2a4bfc6cacadcb8985093d62d1 Author: Jeremy Roman <jbroman@chromium.org> Date: Mon Jan 22 22:58:19 2018 [remoteobjects] Use Mockito in unit tests. This and subsequent tests necessitate some slightly complex logic for ensuring that the resposne callback is invoked appropriately. Rather than reinvent an ad-hoc mocking framework, make reasonable use of the one already in use in other content_junit_tests. Bug: 794320 Change-Id: I4f39f5c3ca531b6c802da49e0bb2067d0b6e3045 Reviewed-on: https://chromium-review.googlesource.com/879342 Reviewed-by: Bo <boliu@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#531043} [modify] https://crrev.com/b3237561d68b4d2a4bfc6cacadcb8985093d62d1/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0152f492d899f9f24359223649f6cf7ac8d06f8a commit 0152f492d899f9f24359223649f6cf7ac8d06f8a Author: Jeremy Roman <jbroman@chromium.org> Date: Wed Jan 24 16:52:07 2018 [remoteobjects] Return an error if the invoked method could not be found. Bug: 794320 Change-Id: Ia541daf61c3ec99d052f373ca663d861f93cd08a Reviewed-on: https://chromium-review.googlesource.com/875188 Commit-Queue: Jeremy Roman <jbroman@chromium.org> Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Cr-Commit-Position: refs/heads/master@{#531562} [modify] https://crrev.com/0152f492d899f9f24359223649f6cf7ac8d06f8a/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/0152f492d899f9f24359223649f6cf7ac8d06f8a/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/0152f492d899f9f24359223649f6cf7ac8d06f8a/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/c368a6fd14c26a844b6665acfcd678598f63cfaa commit c368a6fd14c26a844b6665acfcd678598f63cfaa Author: Jeremy Roman <jbroman@chromium.org> Date: Sat Jan 27 04:13:53 2018 [remoteobjects] Return an error if java.lang.Object#getClass is invoked, and audit such cases. For security reasons, it is not valid for script to call getClass, which would allow it to reach the Java reflection APIs. Reject any attempts (but allow uses of other methods named "getClass"), and report it to an auditing object. Provide an implementation of the auditor intended for use in production, which writes to EventLog. This is not inline in the class, as content_junit_tests doesn't fully initialize the Android framework and so cannot call Process.myUid. Bug: 794320 Change-Id: I56d2467e5d15c0d886ce46c63c1bdcc00cf8335c Reviewed-on: https://chromium-review.googlesource.com/881555 Commit-Queue: Jeremy Roman <jbroman@chromium.org> Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Cr-Commit-Position: refs/heads/master@{#532153} [modify] https://crrev.com/c368a6fd14c26a844b6665acfcd678598f63cfaa/content/public/android/BUILD.gn [add] https://crrev.com/c368a6fd14c26a844b6665acfcd678598f63cfaa/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectAuditorImpl.java [modify] https://crrev.com/c368a6fd14c26a844b6665acfcd678598f63cfaa/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/c368a6fd14c26a844b6665acfcd678598f63cfaa/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/c368a6fd14c26a844b6665acfcd678598f63cfaa/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/c71a585cf1373201e13cd4afb41777b8044b42f1 commit c71a585cf1373201e13cd4afb41777b8044b42f1 Author: Jeremy Roman <jbroman@chromium.org> Date: Tue Jan 30 23:08:50 2018 [remoteobjects] Add a test that static methods can be found and invoked. This doesn't require special support, since the java.lang.reflect API allows calling static methods the same way as instance methods. Bug: 794320 Change-Id: Id9064ec69b6cbdbe23576fa1f3e5d5e0e2c30677 Reviewed-on: https://chromium-review.googlesource.com/894465 Reviewed-by: Bo <boliu@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#533063} [modify] https://crrev.com/c71a585cf1373201e13cd4afb41777b8044b42f1/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/bf86f344a575a2a15d6b756c1e1b14cd4fc40406 commit bf86f344a575a2a15d6b756c1e1b14cd4fc40406 Author: Jeremy Roman <jbroman@chromium.org> Date: Tue Jan 30 23:22:48 2018 [remoteobjects] Indicate to the caller when the target method threw an exception. If so, the exception stack trace is printed (this is identical to JNI ExceptionDescribe, which also looks up and calls printStackTrace). Exceptions which indicate a bug in the browser-side implementation are rethrown as runtime exceptions. Bug: 794320 Change-Id: Ib33a17aae5e5a77cf45c24e055bfb6a097094324 Reviewed-on: https://chromium-review.googlesource.com/893542 Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Bo <boliu@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#533074} [modify] https://crrev.com/bf86f344a575a2a15d6b756c1e1b14cd4fc40406/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/bf86f344a575a2a15d6b756c1e1b14cd4fc40406/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/bf86f344a575a2a15d6b756c1e1b14cd4fc40406/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f6a89d931adaf1ebf5030a7217ccda998dd9d4ec commit f6a89d931adaf1ebf5030a7217ccda998dd9d4ec Author: Jeremy Roman <jbroman@chromium.org> Date: Tue Feb 13 17:26:14 2018 [remoteobjects] Coerce number (double) values to an appropriate Java type. This is more or less a direct port of CoerceJavaScriptDoubleToJavaValue and CoerceJavaScriptIntegerToJavaValue, which in turn rely on behavior from content::V8ValueConverterImpl (regarding the classification of numbers). There's a case to be made that this should just use java.lang.Double#toString, but it seemed safer to preserve existing number-to-string coercion behavior, quirky though it is. Basic unit tests are included. This will be covered by JavaBridgeCoercionTest, which is more exhaustive, once this is hooked up from end to end. Bug: 794320 Change-Id: I086bbaa5c27452c5e56795439e9dbd7fd9c771b8 Reviewed-on: https://chromium-review.googlesource.com/912590 Commit-Queue: Jeremy Roman <jbroman@chromium.org> Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Cr-Commit-Position: refs/heads/master@{#536396} [modify] https://crrev.com/f6a89d931adaf1ebf5030a7217ccda998dd9d4ec/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/f6a89d931adaf1ebf5030a7217ccda998dd9d4ec/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/f6a89d931adaf1ebf5030a7217ccda998dd9d4ec/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/bfca61a66e1d8decd8d3f2b798b7337c78226018 commit bfca61a66e1d8decd8d3f2b798b7337c78226018 Author: Jeremy Roman <jbroman@chromium.org> Date: Wed Feb 14 22:46:22 2018 [remoteobjects] Convert Int32-ish things to char but use zero for all other doubles. Apparently, I missed that CoerceJavaScriptIntegerToJavaValue *does* attempt to keep the value (modulo 2^16), even though CoerceJavaScriptDoubleToJavaValue does not. To preserve this behavior, we must identify the values that would go through the former path and treat them specially. Bug: 794320 Change-Id: I005842fa2b6486f7be67d8b9aad3f89814fccc90 Reviewed-on: https://chromium-review.googlesource.com/919193 Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#536854} [modify] https://crrev.com/bfca61a66e1d8decd8d3f2b798b7337c78226018/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/bfca61a66e1d8decd8d3f2b798b7337c78226018/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7663245e55f30f3a47d1c5fc31fcb65ccb96ba76 commit 7663245e55f30f3a47d1c5fc31fcb65ccb96ba76 Author: Jeremy Roman <jbroman@chromium.org> Date: Thu Mar 01 16:37:44 2018 [remoteobjects] Convert JavaScript booleans to Java types. A fairly direct copy of CoerceJavaScriptBooleanToJavaValue Bug: 794320 Change-Id: Ifac567f8b5d300a89d4057e47bb45a28863e715f Reviewed-on: https://chromium-review.googlesource.com/940346 Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#540177} [modify] https://crrev.com/7663245e55f30f3a47d1c5fc31fcb65ccb96ba76/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/7663245e55f30f3a47d1c5fc31fcb65ccb96ba76/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/7663245e55f30f3a47d1c5fc31fcb65ccb96ba76/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/3ef79c4e4c3061c6ed15e2e15ac0eb2e1053be4e commit 3ef79c4e4c3061c6ed15e2e15ac0eb2e1053be4e Author: Jeremy Roman <jbroman@chromium.org> Date: Thu Mar 01 16:42:17 2018 [remoteobjects] Convert JavaScript strings to Java types. A fairly direct copy of CoerceJavaScriptStringToJavaValue. Bug: 794320 Change-Id: I4e7cbd020fe9702d59c84a32e0e986f970feace1 Reviewed-on: https://chromium-review.googlesource.com/941788 Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#540180} [modify] https://crrev.com/3ef79c4e4c3061c6ed15e2e15ac0eb2e1053be4e/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/3ef79c4e4c3061c6ed15e2e15ac0eb2e1053be4e/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/3ef79c4e4c3061c6ed15e2e15ac0eb2e1053be4e/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9418963f22f67134682f4ba161d281fc307de7b5 commit 9418963f22f67134682f4ba161d281fc307de7b5 Author: Jeremy Roman <jbroman@chromium.org> Date: Thu Mar 01 16:49:33 2018 [remoteobjects] Convert JavaScript null and undefined to Java types. A fairly direct copy of CoerceJavaScriptNullOrUndefinedToJavaValue. Bug: 794320 Change-Id: I6d057198262f589334d100800da63151280a38ce Reviewed-on: https://chromium-review.googlesource.com/941902 Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#540182} [modify] https://crrev.com/9418963f22f67134682f4ba161d281fc307de7b5/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/9418963f22f67134682f4ba161d281fc307de7b5/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/9418963f22f67134682f4ba161d281fc307de7b5/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/97754f10f817e2f76f532ac8c1acb18a35e830b3 commit 97754f10f817e2f76f532ac8c1acb18a35e830b3 Author: Jeremy Roman <jbroman@chromium.org> Date: Sat Mar 03 18:06:41 2018 [remoteobjects] Convert JavaScript arrays to Java types. A fairly direct copy of CoerceJavaScriptListToArray, including adding the "do not coerce to string" behavior for elements. CoerceJavaScriptDictionaryToArray has the same behavior, so hopefully this distinction can be left out of the Java-side code. Bug: 794320 Change-Id: Ib9decbe9cbc332ac59b1590b10ff310057ee8544 Reviewed-on: https://chromium-review.googlesource.com/946872 Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#540761} [modify] https://crrev.com/97754f10f817e2f76f532ac8c1acb18a35e830b3/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/97754f10f817e2f76f532ac8c1acb18a35e830b3/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/97754f10f817e2f76f532ac8c1acb18a35e830b3/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b90d7cb4c28b37551b77fb503b97edfa8197045d commit b90d7cb4c28b37551b77fb503b97edfa8197045d Author: Jeremy Roman <jbroman@chromium.org> Date: Tue Mar 06 14:17:42 2018 [remoteobjects] Do not call methods that return arrays. Existing behavior is not only to not convert the result, but skip calling the method altogether and return undefined. https://chromium.googlesource.com/chromium/src/+/a0259b3ae165b0673416f02848bed75082d639f4/content/browser/android/java/gin_java_method_invocation_helper.cc#282 Bug: 794320 Change-Id: Ida51acd22b23e57160892e724edb1c6f19623589 Reviewed-on: https://chromium-review.googlesource.com/949414 Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#541095} [modify] https://crrev.com/b90d7cb4c28b37551b77fb503b97edfa8197045d/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/b90d7cb4c28b37551b77fb503b97edfa8197045d/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/33d4fe7c76dbf0130193f42063634ae2b05eb1ee commit 33d4fe7c76dbf0130193f42063634ae2b05eb1ee Author: Jeremy Roman <jbroman@chromium.org> Date: Tue Mar 20 22:01:07 2018 [remoteobjects] Convert void and primitive return values for Mojo reply. Implementing the current behavior of GinJavaMethodInvocationHelper::InvokeMethod. Objects are more complicated, and so left for later. Bug: 794320 Change-Id: Ib35a81f61982087265b025cae5ea680bc5f5262d Reviewed-on: https://chromium-review.googlesource.com/949570 Commit-Queue: Jeremy Roman <jbroman@chromium.org> Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Cr-Commit-Position: refs/heads/master@{#544545} [modify] https://crrev.com/33d4fe7c76dbf0130193f42063634ae2b05eb1ee/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [modify] https://crrev.com/33d4fe7c76dbf0130193f42063634ae2b05eb1ee/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [modify] https://crrev.com/33d4fe7c76dbf0130193f42063634ae2b05eb1ee/third_party/WebKit/public/web/remote_objects.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2a71a2090500adc227565e1ce924e0c919b98d8e commit 2a71a2090500adc227565e1ce924e0c919b98d8e Author: Jeremy Roman <jbroman@chromium.org> Date: Tue Jul 10 15:18:47 2018 Implement a Mojo interface which vends RemoteObject interfaces. A RemoteObjectHost exposes an underlying registry of objects which are held on behalf of the client. New objects can become exposed because they are returned from a method on an existing object, at which point they are allocated a new ID. Testing this requires that Mojo work in the test harness, which does not apply to the host (junit/) test suite, but can with some effort be made to work device (javatests/) test suite. In particular, it is necessary to initialize the Mojo EDK before CoreImpl (the nexus of Mojo/Java bindings) can be used. In the Mojo tests, this is done unconditionally as part of the test process startup. For content, this isn't quite right, as some tests run the browser boot process which initializes Mojo specially for that environment. To achieve this, MojoTestRule is extracted from the Mojo unit tests, and augmented with the ability to initialize Mojo from scratch if necessary. Bug: 794320 Tbr: mkwst@chromium.org Change-Id: I12306fb5b137414b29a7493b13383a87eeb745e1 Reviewed-on: https://chromium-review.googlesource.com/1058373 Reviewed-by: Jeremy Roman <jbroman@chromium.org> Reviewed-by: Bo <boliu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Ken Rockot <rockot@chromium.org> Commit-Queue: Jeremy Roman <jbroman@chromium.org> Cr-Commit-Position: refs/heads/master@{#573736} [modify] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/content/public/android/BUILD.gn [add] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectHostImpl.java [modify] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java [add] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectRegistry.java [add] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/content/public/android/javatests/src/org/chromium/content/browser/remoteobjects/RemoteObjectHostImplTest.java [modify] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java [add] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectRegistryTest.java [modify] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/content/shell/BUILD.gn [modify] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/content/shell/android/BUILD.gn [modify] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/mojo/public/java/system/BUILD.gn [modify] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/mojo/public/java/system/javatests/mojo_test_rule.cc [modify] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/mojo/public/java/system/javatests/src/org/chromium/mojo/MojoTestRule.java [modify] https://crrev.com/2a71a2090500adc227565e1ce924e0c919b98d8e/third_party/blink/public/web/remote_objects.mojom
Comment 1 by jbroman@chromium.org
, Jan 17 2018