forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Mojo JS bindings: change module loading solution.
This change takes place on the mojo/public/js/new_bindings copy so it doesn't affect existing users. - This change gets rid of AMD module loading. Now the bindings API is defined in the "mojo" namespace. At build time, all bindings files are combined into a single file "mojo_bindings.js". Users should use <script> tag to include this file (as well as generated mojom.js files). - Generated mojom.js files export their definitions under the same namespace as the "module" statement in the corresponding mojom files. - This change also adds a "use_new_js_bindings" option to the generator. It duplicates the control message mojom files in order to generate two different flavors of JS bindings. - The new bindings use the Mojo system API defined by Web IDL. BUG=699569 Review-Url: https://codereview.chromium.org/2759563004 Cr-Original-Commit-Position: refs/heads/master@{#459654} Committed: https://chromium.googlesource.com/chromium/src/+/e6a5534bb3fe61b5224f1a22e43ba957190ad5d0 Review-Url: https://codereview.chromium.org/2759563004 Cr-Commit-Position: refs/heads/master@{#461349}
- Loading branch information
Showing
27 changed files
with
556 additions
and
301 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
per-file *.mojom=set noparent | ||
per-file *.mojom=file://ipc/SECURITY_OWNERS |
67 changes: 67 additions & 0 deletions
67
mojo/public/interfaces/bindings/new_bindings/interface_control_messages.mojom
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
// Copyright 2015 The Chromium Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style license that can be | ||
// found in the LICENSE file. | ||
|
||
[JavaPackage="org.chromium.mojo.bindings.interfacecontrol"] | ||
module mojo.interface_control2; | ||
|
||
// For each user-defined interface, some control functions are provided by the | ||
// interface endpoints at both sides. | ||
|
||
//////////////////////////////////////////////////////////////////////////////// | ||
// Run@0xFFFFFFFF(RunInput input) => (RunOutput? output); | ||
// | ||
// This control function runs the input command. If the command is not | ||
// supported, |output| is set to null; otherwise |output| stores the result, | ||
// whose type depends on the input. | ||
|
||
const uint32 kRunMessageId = 0xFFFFFFFF; | ||
|
||
struct RunMessageParams { | ||
RunInput input; | ||
}; | ||
union RunInput { | ||
QueryVersion query_version; | ||
FlushForTesting flush_for_testing; | ||
}; | ||
|
||
struct RunResponseMessageParams { | ||
RunOutput? output; | ||
}; | ||
union RunOutput { | ||
QueryVersionResult query_version_result; | ||
}; | ||
|
||
// Queries the max supported version of the user-defined interface. | ||
// Sent by the interface client side. | ||
struct QueryVersion { | ||
}; | ||
struct QueryVersionResult { | ||
uint32 version; | ||
}; | ||
|
||
// Sent by either side of the interface. | ||
struct FlushForTesting { | ||
}; | ||
|
||
//////////////////////////////////////////////////////////////////////////////// | ||
// RunOrClosePipe@0xFFFFFFFE(RunOrClosePipeInput input); | ||
// | ||
// This control function runs the input command. If the operation fails or the | ||
// command is not supported, the message pipe is closed. | ||
|
||
const uint32 kRunOrClosePipeMessageId = 0xFFFFFFFE; | ||
|
||
struct RunOrClosePipeMessageParams { | ||
RunOrClosePipeInput input; | ||
}; | ||
union RunOrClosePipeInput { | ||
RequireVersion require_version; | ||
}; | ||
|
||
// If the specified version of the user-defined interface is not supported, the | ||
// function fails and the pipe is closed. | ||
// Sent by the interface client side. | ||
struct RequireVersion { | ||
uint32 version; | ||
}; |
46 changes: 46 additions & 0 deletions
46
mojo/public/interfaces/bindings/new_bindings/pipe_control_messages.mojom
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
// Copyright 2015 The Chromium Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style license that can be | ||
// found in the LICENSE file. | ||
|
||
[JavaPackage="org.chromium.mojo.bindings.pipecontrol"] | ||
module mojo.pipe_control2; | ||
|
||
// For each message pipe running user-defined interfaces, some control | ||
// functions are provided and used by the routers at both ends of the pipe, so | ||
// that they can coordinate to manage interface endpoints. | ||
// All these control messages will have the interface ID field in the message | ||
// header set to invalid. | ||
|
||
//////////////////////////////////////////////////////////////////////////////// | ||
// RunOrClosePipe@0xFFFFFFFE(RunOrClosePipeInput input); | ||
// | ||
// This control function runs the input command. If the operation fails or the | ||
// command is not supported, the message pipe is closed. | ||
|
||
const uint32 kRunOrClosePipeMessageId = 0xFFFFFFFE; | ||
|
||
struct RunOrClosePipeMessageParams { | ||
RunOrClosePipeInput input; | ||
}; | ||
|
||
union RunOrClosePipeInput { | ||
PeerAssociatedEndpointClosedEvent peer_associated_endpoint_closed_event; | ||
}; | ||
|
||
// A user-defined reason about why the interface is disconnected. | ||
struct DisconnectReason { | ||
uint32 custom_reason; | ||
string description; | ||
}; | ||
|
||
// An event to notify that an interface endpoint set up at the message sender | ||
// side has been closed. | ||
// | ||
// This event is omitted if the endpoint belongs to the master interface and | ||
// there is no disconnect reason specified. | ||
struct PeerAssociatedEndpointClosedEvent { | ||
// The interface ID. | ||
uint32 id; | ||
DisconnectReason? disconnect_reason; | ||
}; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
// Copyright 2017 The Chromium Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style license that can be | ||
// found in the LICENSE file. | ||
|
||
module test.echo.mojom; | ||
|
||
import "echo_import.mojom"; | ||
|
||
interface Echo { | ||
EchoPoint(test.echo_import.mojom.Point point) | ||
=> (test.echo_import.mojom.Point result); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
// Copyright 2017 The Chromium Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style license that can be | ||
// found in the LICENSE file. | ||
|
||
module test.echo_import.mojom; | ||
|
||
struct Point { | ||
int32 x; | ||
int32 y; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
// Copyright 2017 The Chromium Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style license that can be | ||
// found in the LICENSE file. | ||
|
||
'use strict'; | ||
|
||
if (mojo && mojo.internal) { | ||
throw new Error('The Mojo bindings library has been initialized.'); | ||
} | ||
|
||
var mojo = mojo || {}; | ||
mojo.internal = {}; | ||
mojo.internal.global = this; | ||
|
||
(function() { | ||
var internal = mojo.internal; | ||
|
||
function exposeNamespace(namespace) { | ||
var current = internal.global; | ||
var parts = namespace.split('.'); | ||
|
||
for (var part; parts.length && (part = parts.shift());) { | ||
if (!current[part]) { | ||
current[part] = {}; | ||
} | ||
current = current[part]; | ||
} | ||
|
||
return current; | ||
} | ||
|
||
internal.exposeNamespace = exposeNamespace; | ||
})(); |
Oops, something went wrong.