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

Unified Diff: mojo/public/js/connection.js

Issue 795593004: Update mojo sdk to rev cc531b32182099a5a034a99daff35ed5d38a61c8 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More workarounds for MSVC 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
« no previous file with comments | « mojo/public/js/codec_unittests.js ('k') | mojo/public/js/connector.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/js/connection.js
diff --git a/mojo/public/js/connection.js b/mojo/public/js/connection.js
index eef89f6a511f070de7c1c23c8e8d9e8fa4d16b43..21c31e087bfc1ffbcc8b13d218be223fa2d1f1ee 100644
--- a/mojo/public/js/connection.js
+++ b/mojo/public/js/connection.js
@@ -6,9 +6,12 @@ define("mojo/public/js/connection", [
"mojo/public/js/connector",
"mojo/public/js/core",
"mojo/public/js/router",
-], function(connector, core, routerModule) {
+], function(connector, core, router) {
+
+ var Router = router.Router;
+ var TestConnector = connector.TestConnector;
+ var TestRouter = router.TestRouter;
- // TODO(hansmuller): the proxy connection_ property should connection$
// TODO(hansmuller): the proxy receiver_ property should be receiver$
function BaseConnection(localStub, remoteProxy, router) {
@@ -44,7 +47,7 @@ define("mojo/public/js/connection", [
function Connection(
handle, localFactory, remoteFactory, routerFactory, connectorFactory) {
- var routerClass = routerFactory || routerModule.Router;
+ var routerClass = routerFactory || Router;
var router = new routerClass(handle, connectorFactory);
var remoteProxy = remoteFactory && new remoteFactory(router);
var localStub = localFactory && new localFactory(remoteProxy);
@@ -54,73 +57,86 @@ define("mojo/public/js/connection", [
Connection.prototype = Object.create(BaseConnection.prototype);
// The TestConnection subclass is only intended to be used in unit tests.
-
function TestConnection(handle, localFactory, remoteFactory) {
Connection.call(this,
handle,
localFactory,
remoteFactory,
- routerModule.TestRouter,
- connector.TestConnector);
+ TestRouter,
+ TestConnector);
}
TestConnection.prototype = Object.create(Connection.prototype);
- function createOpenConnection(stub, proxy) {
- var messagePipe = core.createMessagePipe();
- // TODO(hansmuller): Check messagePipe.result.
- var router = new routerModule.Router(messagePipe.handle0);
- var connection = new BaseConnection(stub, proxy, router);
- connection.messagePipeHandle = messagePipe.handle1;
- return connection;
+ // Called by the generated interface Proxy constructor classes.
+ function initProxyInstance(proxy, proxyInterface, receiver) {
+ Object.defineProperty(proxy, 'local$', {
+ get: function() {
+ return proxy.connection$ &&
+ proxy.connection$.local && proxy.connection$.local.delegate$
+ },
+ set: function(value) {
+ // TODO: what if the connection hasn't been created yet?
+ if (proxy.connection$ && proxy.connection$.local) {
+ proxy.connection$.local.delegate$ = value;
+ value.remote$ = proxy;
+ }
+ }
+ });
+ // TODO(hansmuller): Temporary, for Chrome backwards compatibility.
+ if (receiver instanceof Router)
+ proxy.receiver_ = receiver;
}
- function getProxyConnection(proxy, proxyInterface) {
- if (!proxy.connection_) {
- var stub = proxyInterface.client && new proxyInterface.client.stubClass;
- proxy.connection_ = createOpenConnection(stub, proxy);
- }
- return proxy.connection_;
+ function createEmptyProxy() {
+ var proxy = {};
+ initProxyInstance(proxy);
+ return proxy;
}
- function getStubConnection(stub, proxyInterface) {
- if (!stub.connection_) {
- var proxy = proxyInterface.client && new proxyInterface.client.proxyClass;
- stub.connection_ = createOpenConnection(stub, proxy);
+ function createOpenConnection(
+ messagePipeHandle, clientImpl, localInterface, remoteInterface) {
+ var stubClass = localInterface && localInterface.stubClass
+ var proxyClass = remoteInterface && remoteInterface.proxyClass;
+ var stub = stubClass &&
+ (clientImpl ? new stubClass(clientImpl) : new stubClass);
+ var proxy = proxyClass ? new proxyClass : createEmptyProxy();
+ var router = new Router(messagePipeHandle);
+ var connection = new BaseConnection(stub, proxy, router);
+ proxy.connection$ = connection;
+ if (clientImpl) {
+ clientImpl.connection$ = connection;
+ clientImpl.remote$ = proxy;
}
- return stub.connection_;
+ return connection;
}
- function initProxyInstance(proxy, proxyInterface, receiver) {
- if (proxyInterface.client) {
- Object.defineProperty(proxy, 'client$', {
- get: function() {
- var connection = getProxyConnection(proxy, proxyInterface);
- return connection.local && connection.local.delegate$
- },
- set: function(value) {
- var connection = getProxyConnection(proxy, proxyInterface);
- if (connection.local)
- connection.local.delegate$ = value;
- }
- });
- }
- if (receiver instanceof routerModule.Router) {
- // TODO(hansmuller): Temporary, for Chrome backwards compatibility.
- proxy.receiver_ = receiver;
- } else if (receiver) {
- var router = new routerModule.Router(receiver);
- var stub = proxyInterface.client && new proxyInterface.client.stubClass;
- proxy.connection_ = new BaseConnection(stub, proxy, router);
- proxy.connection_.messagePipeHandle = receiver;
- }
+ // Return a message pipe handle.
+ function bindProxyClient(clientImpl, localInterface, remoteInterface) {
+ var messagePipe = core.createMessagePipe();
+ if (messagePipe.result != core.RESULT_OK)
+ throw new Error("createMessagePipe failed " + messagePipe.result);
+
+ createOpenConnection(
+ messagePipe.handle0, clientImpl, localInterface, remoteInterface);
+ return messagePipe.handle1;
+ }
+
+ // Return a proxy.
+ function bindProxyHandle(proxyHandle, localInterface, remoteInterface) {
+ if (!core.isHandle(proxyHandle))
+ throw new Error("Not a handle " + proxyHandle);
+
+ var connection = createOpenConnection(
+ proxyHandle, undefined, localInterface, remoteInterface);
+ return connection.remote;
}
var exports = {};
exports.Connection = Connection;
exports.TestConnection = TestConnection;
- exports.getProxyConnection = getProxyConnection;
- exports.getStubConnection = getStubConnection;
+ exports.bindProxyHandle = bindProxyHandle;
+ exports.bindProxyClient = bindProxyClient;
exports.initProxyInstance = initProxyInstance;
return exports;
});
« no previous file with comments | « mojo/public/js/codec_unittests.js ('k') | mojo/public/js/connector.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698