summaryrefslogtreecommitdiffstats
path: root/third_party
diff options
context:
space:
mode:
authorsky <sky@chromium.org>2015-04-17 09:08:06 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-17 16:09:08 +0000
commita38136b7f2fd5a7a425bf06bc54c10741bfc22bd (patch)
tree72963fde5a9f0d6de75275c65e9e806c903fa07c /third_party
parent3f26f4d816781b818c0ec2ba7145ba8acd971f97 (diff)
downloadchromium_src-a38136b7f2fd5a7a425bf06bc54c10741bfc22bd.zip
chromium_src-a38136b7f2fd5a7a425bf06bc54c10741bfc22bd.tar.gz
chromium_src-a38136b7f2fd5a7a425bf06bc54c10741bfc22bd.tar.bz2
Update mojo sdk to rev 8563c3d4162bd74e96783e823e076e99869d7385
R=jamesr@chromium.org, rockot@chromium.org TBR=rockot@chromium.org Review URL: https://codereview.chromium.org/1096593002 Cr-Commit-Position: refs/heads/master@{#325643}
Diffstat (limited to 'third_party')
-rw-r--r--third_party/mojo/src/mojo/public/VERSION2
-rw-r--r--third_party/mojo/src/mojo/public/c/gles2/gles2.h5
-rw-r--r--third_party/mojo/src/mojo/public/c/gles2/gles2_types.h1
-rw-r--r--third_party/mojo/src/mojo/public/cpp/bindings/binding.h5
-rw-r--r--third_party/mojo/src/mojo/public/cpp/bindings/interface_ptr.h2
-rw-r--r--third_party/mojo/src/mojo/public/cpp/bindings/tests/binding_unittest.cc28
-rw-r--r--third_party/mojo/src/mojo/public/dart/application.dart8
-rw-r--r--third_party/mojo/src/mojo/public/dart/src/codec.dart16
-rw-r--r--third_party/mojo/src/mojo/public/dart/src/stub.dart11
-rw-r--r--third_party/mojo/src/mojo/public/interfaces/application/BUILD.gn5
-rw-r--r--third_party/mojo/src/mojo/public/interfaces/bindings/tests/sample_interfaces.mojom6
-rw-r--r--third_party/mojo/src/mojo/public/platform/native/gles2_thunks.cc8
-rw-r--r--third_party/mojo/src/mojo/public/platform/native/gles2_thunks.h20
-rw-r--r--third_party/mojo/src/mojo/public/tools/NETWORK_SERVICE_VERSION2
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl1
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl11
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl4
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl8
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/enum_definition.tmpl9
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl18
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/module_definition.tmpl2
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl7
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/interface.tmpl24
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/java_templates/interface_definition.tmpl12
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py4
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_dart_generator.py51
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_go_generator.py140
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_java_generator.py4
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_js_generator.py2
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py88
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module.py.tmpl6
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module_macros.tmpl2
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/mojom.gni12
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/constant_resolver.py91
-rw-r--r--third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/generator.py80
-rwxr-xr-xthird_party/mojo/src/mojo/public/tools/gn/zip.py14
-rw-r--r--third_party/mojo_services/DEPS3
-rw-r--r--third_party/mojo_services/src/accessibility/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/clipboard/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/content_handler/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/geometry/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/gpu/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/http_server/public/cpp/http_server_util.h2
-rw-r--r--third_party/mojo_services/src/http_server/public/cpp/lib/http_server_util.cc2
-rw-r--r--third_party/mojo_services/src/http_server/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/input_events/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/native_viewport/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/navigation/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/surfaces/public/interfaces/BUILD.gn4
-rw-r--r--third_party/mojo_services/src/view_manager/public/cpp/BUILD.gn4
-rw-r--r--third_party/mojo_services/src/view_manager/public/cpp/keys.cc12
-rw-r--r--third_party/mojo_services/src/view_manager/public/cpp/keys.h14
-rw-r--r--third_party/mojo_services/src/view_manager/public/interfaces/BUILD.gn2
-rw-r--r--third_party/mojo_services/src/window_manager/public/interfaces/BUILD.gn2
54 files changed, 436 insertions, 336 deletions
diff --git a/third_party/mojo/src/mojo/public/VERSION b/third_party/mojo/src/mojo/public/VERSION
index 5d5b9f9e..686ad23 100644
--- a/third_party/mojo/src/mojo/public/VERSION
+++ b/third_party/mojo/src/mojo/public/VERSION
@@ -1 +1 @@
-dcd8c63adaf8bd5c89bd21ddb439aa8651da32dc \ No newline at end of file
+8563c3d4162bd74e96783e823e076e99869d7385 \ No newline at end of file
diff --git a/third_party/mojo/src/mojo/public/c/gles2/gles2.h b/third_party/mojo/src/mojo/public/c/gles2/gles2.h
index 36c6f7f..c2d43ec 100644
--- a/third_party/mojo/src/mojo/public/c/gles2/gles2.h
+++ b/third_party/mojo/src/mojo/public/c/gles2/gles2.h
@@ -27,6 +27,11 @@ MOJO_GLES2_EXPORT MojoGLES2Context
MOJO_GLES2_EXPORT void MojoGLES2DestroyContext(MojoGLES2Context context);
MOJO_GLES2_EXPORT void MojoGLES2MakeCurrent(MojoGLES2Context context);
MOJO_GLES2_EXPORT void MojoGLES2SwapBuffers(void);
+MOJO_GLES2_EXPORT void MojoGLES2SignalSyncPoint(
+ MojoGLES2Context context,
+ uint32_t sync_point,
+ MojoGLES2SignalSyncPointCallback callback,
+ void* closure);
// TODO(piman): We shouldn't have to leak those 2 interfaces, especially in a
// type-unsafe way.
diff --git a/third_party/mojo/src/mojo/public/c/gles2/gles2_types.h b/third_party/mojo/src/mojo/public/c/gles2/gles2_types.h
index 3ecf4db..75be18b 100644
--- a/third_party/mojo/src/mojo/public/c/gles2/gles2_types.h
+++ b/third_party/mojo/src/mojo/public/c/gles2/gles2_types.h
@@ -17,6 +17,7 @@ extern "C" {
typedef struct MojoGLES2ContextPrivate* MojoGLES2Context;
typedef void (*MojoGLES2ContextLost)(void* closure);
+typedef void (*MojoGLES2SignalSyncPointCallback)(void* closure);
#ifdef __cplusplus
} // extern "C"
diff --git a/third_party/mojo/src/mojo/public/cpp/bindings/binding.h b/third_party/mojo/src/mojo/public/cpp/bindings/binding.h
index 5894df4..8dbcbd4 100644
--- a/third_party/mojo/src/mojo/public/cpp/bindings/binding.h
+++ b/third_party/mojo/src/mojo/public/cpp/bindings/binding.h
@@ -8,6 +8,7 @@
#include "mojo/public/c/environment/async_waiter.h"
#include "mojo/public/cpp/bindings/error_handler.h"
#include "mojo/public/cpp/bindings/interface_ptr.h"
+#include "mojo/public/cpp/bindings/interface_ptr_info.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/lib/filter_chain.h"
#include "mojo/public/cpp/bindings/lib/message_header_validator.h"
@@ -132,7 +133,9 @@ class Binding : public ErrorHandler {
InterfacePtr<Interface>* ptr,
const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter()) {
MessagePipe pipe;
- ptr->Bind(pipe.handle0.Pass(), waiter);
+ ptr->Bind(
+ InterfacePtrInfo<Interface>(pipe.handle0.Pass(), Interface::Version_),
+ waiter);
Bind(pipe.handle1.Pass(), waiter);
}
diff --git a/third_party/mojo/src/mojo/public/cpp/bindings/interface_ptr.h b/third_party/mojo/src/mojo/public/cpp/bindings/interface_ptr.h
index 00f1cce..7c4a3fe 100644
--- a/third_party/mojo/src/mojo/public/cpp/bindings/interface_ptr.h
+++ b/third_party/mojo/src/mojo/public/cpp/bindings/interface_ptr.h
@@ -92,7 +92,7 @@ class InterfacePtr {
Interface& operator*() const { return *get(); }
// Returns the version number of the interface that the remote side supports.
- uint32_t version() const { return internal_state_->version(); }
+ uint32_t version() const { return internal_state_.version(); }
// Closes the bound message pipe (if any) and returns the pointer to the
// unbound state.
diff --git a/third_party/mojo/src/mojo/public/cpp/bindings/tests/binding_unittest.cc b/third_party/mojo/src/mojo/public/cpp/bindings/tests/binding_unittest.cc
index 2e38f13..f71401c 100644
--- a/third_party/mojo/src/mojo/public/cpp/bindings/tests/binding_unittest.cc
+++ b/third_party/mojo/src/mojo/public/cpp/bindings/tests/binding_unittest.cc
@@ -5,6 +5,7 @@
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/environment/environment.h"
#include "mojo/public/cpp/utility/run_loop.h"
+#include "mojo/public/interfaces/bindings/tests/sample_interfaces.mojom.h"
#include "mojo/public/interfaces/bindings/tests/sample_service.mojom.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -27,6 +28,19 @@ class ServiceImpl : public sample::Service {
void GetPort(InterfaceRequest<sample::Port> port) override {}
};
+class IntegerAccessorImpl : public sample::IntegerAccessor {
+ public:
+ IntegerAccessorImpl() {}
+ ~IntegerAccessorImpl() override {}
+
+ private:
+ // sample::IntegerAccessor implementation.
+ void GetInteger(const GetIntegerCallback& callback) override {
+ callback.Run(1, sample::ENUM_VALUE);
+ }
+ void SetInteger(int64_t data, sample::Enum type) override {}
+};
+
class RecordingErrorHandler : public ErrorHandler {
public:
RecordingErrorHandler() : error_(false) {}
@@ -48,20 +62,20 @@ class BindingTest : public testing::Test {
protected:
RecordingErrorHandler handler_;
- ServiceImpl impl_;
Environment env_;
RunLoop loop_;
};
// Tests that destroying a mojo::Binding closes the bound message pipe handle.
TEST_F(BindingTest, DestroyClosesMessagePipe) {
+ ServiceImpl impl;
sample::ServicePtr ptr;
auto request = GetProxy(&ptr);
ptr.set_error_handler(&handler_);
bool called = false;
auto called_cb = [&called](int32_t result) { called = true; };
{
- Binding<sample::Service> binding(&impl_, request.Pass());
+ Binding<sample::Service> binding(&impl, request.Pass());
ptr->Frobinate(nullptr, sample::Service::BAZ_OPTIONS_REGULAR, nullptr,
called_cb);
loop_.RunUntilIdle();
@@ -83,8 +97,9 @@ TEST_F(BindingTest, DestroyClosesMessagePipe) {
// Tests that explicitly calling Unbind followed by rebinding works.
TEST_F(BindingTest, Unbind) {
+ ServiceImpl impl;
sample::ServicePtr ptr;
- Binding<sample::Service> binding(&impl_, GetProxy(&ptr));
+ Binding<sample::Service> binding(&impl, GetProxy(&ptr));
bool called = false;
auto called_cb = [&called](int32_t result) { called = true; };
@@ -112,5 +127,12 @@ TEST_F(BindingTest, Unbind) {
EXPECT_TRUE(called);
}
+TEST_F(BindingTest, SetInterfacePtrVersion) {
+ IntegerAccessorImpl impl;
+ sample::IntegerAccessorPtr ptr;
+ Binding<sample::IntegerAccessor> binding(&impl, &ptr);
+ EXPECT_EQ(3u, ptr.version());
+}
+
} // namespace
} // mojo
diff --git a/third_party/mojo/src/mojo/public/dart/application.dart b/third_party/mojo/src/mojo/public/dart/application.dart
index 13f7c0b..ba7f497 100644
--- a/third_party/mojo/src/mojo/public/dart/application.dart
+++ b/third_party/mojo/src/mojo/public/dart/application.dart
@@ -10,11 +10,9 @@ import 'dart:typed_data';
import 'package:mojo/public/dart/bindings.dart' as bindings;
import 'package:mojo/public/dart/core.dart' as core;
-import 'package:mojo/public/interfaces/application/application.mojom.dart'
- as application_mojom;
-import 'package:mojo/public/interfaces/application/service_provider.mojom.dart';
-import 'package:mojo/public/interfaces/application/shell.mojom.dart'
- as shell_mojom;
+import 'package:mojo/application.mojom.dart' as application_mojom;
+import 'package:mojo/service_provider.mojom.dart';
+import 'package:mojo/shell.mojom.dart' as shell_mojom;
part 'src/application.dart';
part 'src/application_connection.dart';
diff --git a/third_party/mojo/src/mojo/public/dart/src/codec.dart b/third_party/mojo/src/mojo/public/dart/src/codec.dart
index d031339..7bc12f8 100644
--- a/third_party/mojo/src/mojo/public/dart/src/codec.dart
+++ b/third_party/mojo/src/mojo/public/dart/src/codec.dart
@@ -8,7 +8,7 @@ int align(int size) => size + (kAlignment - (size % kAlignment)) % kAlignment;
const int kAlignment = 8;
const int kSerializedHandleSize = 4;
-const int kSerializedInterfaceSize = 8; // 4-byte handle + 4-byte version
+const int kSerializedInterfaceSize = 8; // 4-byte handle + 4-byte version
const int kPointerSize = 8;
// TODO(yzshen): In order to work with other bindings which still interprets
// the |version| field as |num_fields|, set it to version 2 for now.
@@ -380,11 +380,10 @@ class Encoder {
encodeNullPointer(offset, isArrayNullable(nullability));
return;
}
- var encoder = encoderForArray(
- elementSize, value.length, offset, expectedLength);
+ var encoder =
+ encoderForArray(elementSize, value.length, offset, expectedLength);
for (int i = 0; i < value.length; ++i) {
- int elementOffset =
- ArrayDataHeader.kHeaderSize + elementSize * i;
+ int elementOffset = ArrayDataHeader.kHeaderSize + elementSize * i;
elementEncoder(
encoder, value[i], elementOffset, isElementNullable(nullability));
}
@@ -489,6 +488,7 @@ class _Validator {
final int _numberOfHandles;
int _minNextClaimedHandle = 0;
int _minNextMemory = 0;
+ List<int> _skippedIndices = [];
_Validator(this._maxMemory, this._numberOfHandles);
@@ -499,6 +499,9 @@ class _Validator {
if (handle >= _numberOfHandles) {
throw new MojoCodecError('Trying to access non present handle.');
}
+ for (int i = _minNextClaimedHandle; i < handle; i++) {
+ _skippedIndices.add(i);
+ }
_minNextClaimedHandle = handle + 1;
}
@@ -539,6 +542,9 @@ class Decoder {
ByteData get _buffer => _message.buffer;
List<core.MojoHandle> get _handles => _message.handles;
+ List<core.MojoHandle> get excessHandles => new List.from(_message.handles
+ .getRange(_validator._minNextClaimedHandle, _message.handles.length))
+ ..addAll(_validator._skippedIndices.map((i) => _message.handles[i]));
int decodeInt8(int offset) => _buffer.getInt8(_base + offset);
int decodeUint8(int offset) => _buffer.getUint8(_base + offset);
diff --git a/third_party/mojo/src/mojo/public/dart/src/stub.dart b/third_party/mojo/src/mojo/public/dart/src/stub.dart
index c932584..87298bf 100644
--- a/third_party/mojo/src/mojo/public/dart/src/stub.dart
+++ b/third_party/mojo/src/mojo/public/dart/src/stub.dart
@@ -33,8 +33,15 @@ abstract class Stub extends core.MojoEventStreamListener {
assert(result.status.isOk || result.status.isResourceExhausted);
// Prepare the response.
- var message = new ServiceMessage.fromMessage(new Message(bytes, handles));
- var responseFuture = _isClosing ? null : handleMessage(message);
+ var message;
+ var responseFuture;
+ try {
+ message = new ServiceMessage.fromMessage(new Message(bytes, handles));
+ responseFuture = _isClosing ? null : handleMessage(message);
+ } catch (e, s) {
+ handles.forEach((h) => h.close());
+ rethrow;
+ }
// If there's a response, send it.
if (responseFuture != null) {
diff --git a/third_party/mojo/src/mojo/public/interfaces/application/BUILD.gn b/third_party/mojo/src/mojo/public/interfaces/application/BUILD.gn
index 32a6987..463df55 100644
--- a/third_party/mojo/src/mojo/public/interfaces/application/BUILD.gn
+++ b/third_party/mojo/src/mojo/public/interfaces/application/BUILD.gn
@@ -11,9 +11,4 @@ mojom("application") {
"service_provider.mojom",
"shell.mojom",
]
-
- # The import_from ensures that Dart's Mojo SDK can be imported with, e.g.,
- # import 'package:mojo/public/dart/core.dart' even when the Mojo SDK lives
- # somewhere else in the source tree.
- import_from = mojo_root
}
diff --git a/third_party/mojo/src/mojo/public/interfaces/bindings/tests/sample_interfaces.mojom b/third_party/mojo/src/mojo/public/interfaces/bindings/tests/sample_interfaces.mojom
index c3cd1b2a..a2dd73f 100644
--- a/third_party/mojo/src/mojo/public/interfaces/bindings/tests/sample_interfaces.mojom
+++ b/third_party/mojo/src/mojo/public/interfaces/bindings/tests/sample_interfaces.mojom
@@ -20,3 +20,9 @@ interface Provider {
EchoEnum(Enum a) => (Enum a);
EchoInt(int32 a) => (int32 a);
};
+
+interface IntegerAccessor {
+ GetInteger() => (int64 data, [MinVersion=2] Enum type);
+ [MinVersion=1]
+ SetInteger(int64 data, [MinVersion=3] Enum type);
+};
diff --git a/third_party/mojo/src/mojo/public/platform/native/gles2_thunks.cc b/third_party/mojo/src/mojo/public/platform/native/gles2_thunks.cc
index 365fac9..526d66a 100644
--- a/third_party/mojo/src/mojo/public/platform/native/gles2_thunks.cc
+++ b/third_party/mojo/src/mojo/public/platform/native/gles2_thunks.cc
@@ -46,6 +46,14 @@ void* MojoGLES2GetContextSupport(MojoGLES2Context context) {
return g_control_thunks.GLES2GetContextSupport(context);
}
+void MojoGLES2SignalSyncPoint(MojoGLES2Context context,
+ uint32_t sync_point,
+ MojoGLES2SignalSyncPointCallback callback,
+ void* closure) {
+ assert(g_control_thunks.GLES2SignalSyncPoint);
+ g_control_thunks.GLES2SignalSyncPoint(context, sync_point, callback, closure);
+}
+
extern "C" THUNK_EXPORT size_t MojoSetGLES2ControlThunks(
const MojoGLES2ControlThunks* gles2_control_thunks) {
if (gles2_control_thunks->size >= sizeof(g_control_thunks))
diff --git a/third_party/mojo/src/mojo/public/platform/native/gles2_thunks.h b/third_party/mojo/src/mojo/public/platform/native/gles2_thunks.h
index 4718ab3..1604d5e 100644
--- a/third_party/mojo/src/mojo/public/platform/native/gles2_thunks.h
+++ b/third_party/mojo/src/mojo/public/platform/native/gles2_thunks.h
@@ -30,6 +30,11 @@ struct MojoGLES2ControlThunks {
// type-unsafe way.
void* (*GLES2GetGLES2Interface)(MojoGLES2Context context);
void* (*GLES2GetContextSupport)(MojoGLES2Context context);
+
+ void (*GLES2SignalSyncPoint)(MojoGLES2Context context,
+ uint32_t sync_point,
+ MojoGLES2SignalSyncPointCallback callback,
+ void* closure);
};
#pragma pack(pop)
@@ -37,13 +42,14 @@ struct MojoGLES2ControlThunks {
// contain pointers to each of the embedder's MojoGLES2ControlThunks functions.
inline MojoGLES2ControlThunks MojoMakeGLES2ControlThunks() {
MojoGLES2ControlThunks gles2_control_thunks = {
- sizeof(MojoGLES2ControlThunks),
- MojoGLES2CreateContext,
- MojoGLES2DestroyContext,
- MojoGLES2MakeCurrent,
- MojoGLES2SwapBuffers,
- MojoGLES2GetGLES2Interface,
- MojoGLES2GetContextSupport
+ sizeof(MojoGLES2ControlThunks),
+ MojoGLES2CreateContext,
+ MojoGLES2DestroyContext,
+ MojoGLES2MakeCurrent,
+ MojoGLES2SwapBuffers,
+ MojoGLES2GetGLES2Interface,
+ MojoGLES2GetContextSupport,
+ MojoGLES2SignalSyncPoint,
};
return gles2_control_thunks;
diff --git a/third_party/mojo/src/mojo/public/tools/NETWORK_SERVICE_VERSION b/third_party/mojo/src/mojo/public/tools/NETWORK_SERVICE_VERSION
index f53b251..a2dc8bd 100644
--- a/third_party/mojo/src/mojo/public/tools/NETWORK_SERVICE_VERSION
+++ b/third_party/mojo/src/mojo/public/tools/NETWORK_SERVICE_VERSION
@@ -1 +1 @@
-custom_build_base_8dbb8989f2c1d6583658686f465786a8e5b99968_issue_1081943002_patchset_1 \ No newline at end of file
+fe30635b3ffb0d553c5b2d3fd59526cd16995bcb \ No newline at end of file
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl
index 2c21d0d..f995e0b 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl
@@ -10,6 +10,7 @@ class {{interface.name}}ResponseValidator;
class {{interface.name}} {
public:
static const char* Name_;
+ static const uint32_t Version_;
using Proxy_ = {{interface.name}}Proxy;
using Stub_ = {{interface.name}}Stub;
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
index 19a33e1..6e52c39 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
@@ -31,6 +31,7 @@ p_{{param.name}}
{#--- Begin #}
const char* {{class_name}}::Name_ = "{{namespace_as_string}}::{{class_name}}";
+const uint32_t {{class_name}}::Version_ = {{interface.version}};
{#--- Constants #}
{% for constant in interface.constants %}
const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}} = {{constant|constant_value}};
@@ -58,7 +59,7 @@ bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept(
message->mutable_payload());
params->DecodePointersAndHandles(message->mutable_handles());
- {{alloc_params(method|response_struct_from_method)}}
+ {{alloc_params(method.response_param_struct)}}
callback_.Run({{pass_params(method.response_parameters)}});
return true;
}
@@ -74,7 +75,7 @@ bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept(
{%- for method in interface.methods %}
{%- set message_name =
"internal::k%s_%s_Name"|format(interface.name, method.name) %}
-{%- set params_struct = method|struct_from_method %}
+{%- set params_struct = method.param_struct %}
{%- set params_description =
"%s.%s request"|format(interface.name, method.name) %}
void {{proxy_name}}::{{method.name}}(
@@ -108,7 +109,7 @@ void {{proxy_name}}::{{method.name}}(
{%- if method.response_parameters != None %}
{%- set message_name =
"internal::k%s_%s_Name"|format(interface.name, method.name) %}
-{%- set response_params_struct = method|response_struct_from_method %}
+{%- set response_params_struct = method.response_param_struct %}
{%- set params_description =
"%s.%s response"|format(interface.name, method.name) %}
class {{class_name}}_{{method.name}}_ProxyToResponder
@@ -176,7 +177,7 @@ bool {{class_name}}Stub::Accept(mojo::Message* message) {
message->mutable_payload());
params->DecodePointersAndHandles(message->mutable_handles());
- {{alloc_params(method|struct_from_method)|indent(4)}}
+ {{alloc_params(method.param_struct)|indent(4)}}
// A null |sink_| means no implementation was bound.
assert(sink_);
sink_->{{method.name}}({{pass_params(method.parameters)}});
@@ -207,7 +208,7 @@ bool {{class_name}}Stub::AcceptWithResponder(
new {{class_name}}_{{method.name}}_ProxyToResponder(
message->request_id(), responder);
{{class_name}}::{{method.name}}Callback callback(runnable);
- {{alloc_params(method|struct_from_method)|indent(4)}}
+ {{alloc_params(method.param_struct)|indent(4)}}
// A null |sink_| means no implementation was bound.
assert(sink_);
sink_->{{method.name}}(
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl
index 969bea2..3593ff6b 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl
@@ -46,11 +46,11 @@ namespace {
{%- for method in interface.methods %}
{%- set method_name = "k%s_%s_Name"|format(interface.name, method.name) %}
const uint32_t {{method_name}} = {{method.ordinal}};
-{% set struct = method|struct_from_method %}
+{% set struct = method.param_struct %}
{% include "struct_declaration.tmpl" %}
{%- include "struct_definition.tmpl" %}
{%- if method.response_parameters != None %}
-{%- set struct = method|response_struct_from_method %}
+{%- set struct = method.response_param_struct %}
{% include "struct_declaration.tmpl" %}
{%- include "struct_definition.tmpl" %}
{%- endif %}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
index 23e5cfd..3e6b0ad 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
@@ -33,14 +33,16 @@ bool {{class_name}}::Validate(const void* data,
switch (object->tag) {
{% for field in union.fields %}
- case {{enum_name}}::{{field.name|upper}}:
-{{ validation_macros.validate_union_field(field, union)|indent(6) }}
+ case {{enum_name}}::{{field.name|upper}}: {
+{{ validation_macros.validate_union_field(field, union)|indent(8) }}
+ }
{%- endfor %}
- default:
+ default: {
ReportValidationError(
mojo::internal::VALIDATION_ERROR_UNKNOWN_UNION_TAG,
"unknown tag in {{union.name}}");
return false;
+ }
}
}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/enum_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/enum_definition.tmpl
index 524b998..3d6c221 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/enum_definition.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/enum_definition.tmpl
@@ -1,12 +1,5 @@
{%- macro enum_def(prefix, enum) -%}
-{%- set prev_enum = 0 %}
{%- for field in enum.fields %}
-{%- if field.value %}
-{{prefix}}final int {{enum.name}}_{{field.name}} = {{field.value|expression_to_text}};
-{%- elif loop.first %}
-{{prefix}}final int {{enum.name}}_{{field.name}} = 0;
-{%- else %}
-{{prefix}}final int {{enum.name}}_{{field.name}} = {{enum.name}}_{{enum.fields[loop.index0 - 1].name}} + 1;
-{%- endif %}
+{{prefix}}const int {{enum.name}}_{{field.name}} = {{field.resolved_value}};
{%- endfor %}
{%- endmacro %}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
index 99e2ab3..0fbcb49 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
@@ -14,7 +14,7 @@ abstract class {{interface|name}} {
{%- endfor -%}
);
{%- else %}
-{%- set response_struct = method|response_struct_from_method %}
+{%- set response_struct = method.response_param_struct %}
Future<{{response_struct|name}}> {{method|name}}(
{%- for parameter in method.parameters -%}
{{parameter.kind|dart_type}} {{parameter|name}},
@@ -25,7 +25,7 @@ abstract class {{interface|name}} {
{#--- Interface Constants #}
{% for constant in interface.constants %}
- static final {{constant|name}} = {{constant.value|expression_to_text}};
+ static const {{constant|name}} = {{constant.value|expression_to_text}};
{%- endfor %}
{#--- Interface Enums #}
@@ -55,7 +55,7 @@ class {{interface|name}}ProxyImpl extends bindings.Proxy {
switch (message.header.type) {
{%- for method in interface.methods %}
{%- if method.response_parameters != None %}
-{%- set response_struct = method|response_struct_from_method %}
+{%- set response_struct = method.response_param_struct %}
case k{{interface|name}}_{{method|name}}_name:
var r = {{response_struct|name}}.deserialize(
message.payload);
@@ -96,7 +96,7 @@ class _{{interface|name}}ProxyCalls implements {{interface|name}} {
{%- for parameter in method.parameters -%}
{{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% endif %}
{%- endfor -%}
- {%- set request_struct = method|struct_from_method -%}
+ {%- set request_struct = method.param_struct -%}
) {
assert(_proxyImpl.isBound);
var params = new {{request_struct|name}}();
@@ -106,8 +106,8 @@ class _{{interface|name}}ProxyCalls implements {{interface|name}} {
_proxyImpl.sendMessage(params, k{{interface|name}}_{{method|name}}_name);
}
{% else %}
- {%- set response_struct = method|response_struct_from_method %}
- {%- set request_struct = method|struct_from_method %}
+ {%- set response_struct = method.response_param_struct %}
+ {%- set request_struct = method.param_struct %}
Future<{{response_struct|name}}> {{method|name}}(
{%- for parameter in method.parameters -%}
{{parameter.kind|dart_type}} {{parameter|name}},
@@ -186,7 +186,7 @@ class {{interface|name}}Stub extends bindings.Stub {
{% for method in interface.methods %}
{%- if method.response_parameters != None %}
-{%- set response_struct = method|response_struct_from_method %}
+{%- set response_struct = method.response_param_struct %}
{{response_struct|name}} _{{response_struct|name}}Factory(
{%- for param in method.response_parameters -%}
{{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %}
@@ -205,7 +205,7 @@ class {{interface|name}}Stub extends bindings.Stub {
assert(_impl != null);
switch (message.header.type) {
{%- for method in interface.methods %}
-{%- set request_struct = method|struct_from_method %}
+{%- set request_struct = method.param_struct %}
case k{{interface|name}}_{{method|name}}_name:
var params = {{request_struct|name}}.deserialize(
message.payload);
@@ -216,7 +216,7 @@ class {{interface|name}}Stub extends bindings.Stub {
{%- endfor -%}
);
{%- else %}
-{%- set response_struct = method|response_struct_from_method %}
+{%- set response_struct = method.response_param_struct %}
return _impl.{{method|name}}(
{%- for parameter in method.parameters -%}
params.{{parameter|name}},
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/module_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/module_definition.tmpl
index cf72c1e..8f6906a 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/module_definition.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/module_definition.tmpl
@@ -1,6 +1,6 @@
{#--- Constants #}
{%- for constant in module.constants %}
-final {{constant.name}} = {{constant.value|expression_to_text}};
+const {{constant.name}} = {{constant.value|expression_to_text}};
{%- endfor %}
{#--- Enums #}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl
index 6d9b653..9f62100 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl
@@ -89,7 +89,7 @@ class {{struct|name}} extends bindings.Struct {
{#--- Constants #}
{%- for constant in struct.constants %}
- static final {{constant.name}} = {{constant.value|expression_to_text}};
+ static const {{constant.name}} = {{constant.value|expression_to_text}};
{%- endfor %}
{#--- initDefaults() #}
@@ -100,7 +100,10 @@ class {{struct|name}} extends bindings.Struct {
{{struct|name}}() : super(kVersions.last.size);
static {{struct|name}} deserialize(bindings.Message message) {
- return decode(new bindings.Decoder(message));
+ var decoder = new bindings.Decoder(message);
+ var result = decode(decoder);
+ decoder.excessHandles.forEach((h) => h.close());
+ return result;
}
static {{struct|name}} decode(bindings.Decoder decoder0) {
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/interface.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/interface.tmpl
index 25435e3..4d4ea39 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/interface.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/interface.tmpl
@@ -13,11 +13,11 @@
{% macro declare_request_params(method) %}
-({{declare_params(method|struct_from_method)}})
+({{declare_params(method.param_struct)}})
{%- if method.response_parameters|is_none_or_empty -%}
{{' (err error)'}}
{%- else -%}
- {{' '}}({{declare_params(method|response_struct_from_method)}}, err error)
+ {{' '}}({{declare_params(method.response_param_struct)}}, err error)
{%- endif -%}
{% endmacro %}
@@ -101,13 +101,13 @@ func (p *{{interface|name}}Proxy) Close_proxy() {
}
{% for method in interface.methods %}
-{{struct_macros.define(method|struct_from_method, False)}}
+{{struct_macros.define(method.param_struct, False)}}
{%- if method.response_parameters %}
-{{struct_macros.define(method|response_struct_from_method, False)}}
+{{struct_macros.define(method.response_param_struct, False)}}
{%- endif %}
func (p *{{interface|name}}Proxy) {{method|name}}{{declare_request_params(method)}} {
- payload := &{{method|struct_from_method|name(False)}}{
-{% for field in (method|struct_from_method).fields %}
+ payload := &{{method.param_struct|name(False)}}{
+{% for field in (method.param_struct).fields %}
{{field|name(False)}},
{% endfor %}
}
@@ -130,13 +130,13 @@ func (p *{{interface|name}}Proxy) {{method|name}}{{declare_request_params(method
p.Close_proxy()
return
}
- var response {{method|response_struct_from_method|name(False)}}
+ var response {{method.response_param_struct|name(False)}}
if err = readResult.Message.DecodePayload(&response); err != nil {
err = fmt.Errorf("can't decode response: %v", err.Error())
p.Close_proxy()
return
}
-{% for field in (method|response_struct_from_method).fields %}
+{% for field in (method.response_param_struct).fields %}
{{field|name(False)}} = response.{{field|name(False)}}
{% endfor %}
{% else %}
@@ -163,21 +163,21 @@ func (s *{{interface|name(False)}}Stub) Accept(message *bindings.Message) (err e
switch message.Header.Type {
{% for method in interface.methods %}
case {{interface|name(False)}}_{{method|name}}_Name:
- var request {{method|struct_from_method|name(False)}}
+ var request {{method.param_struct|name(False)}}
if err := message.DecodePayload(&request); err != nil {
return fmt.Errorf("can't decode request: %v", err.Error())
}
{% if method.response_parameters %}
- var response {{method|response_struct_from_method|name(False)}}
+ var response {{method.response_param_struct|name(False)}}
{% endif %}
{% if method.response_parameters|is_none_or_empty %}
err = s.impl.{{method|name}}(
{%- else -%}
-{% for field in (method|response_struct_from_method).fields %}
+{% for field in (method.response_param_struct).fields %}
response.{{field|name(False)}}{{', '}}
{%- endfor -%}err = s.impl.{{method|name}}(
{%- endif -%}
-{%- for field in (method|struct_from_method).fields -%}
+{%- for field in (method.param_struct).fields -%}
request.{{field|name(False)}}{% if not loop.last %}, {% endif %}
{%- endfor -%}
)
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/java_templates/interface_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/java_templates/interface_definition.tmpl
index e38c895..c7aed13 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/java_templates/interface_definition.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/java_templates/interface_definition.tmpl
@@ -91,9 +91,9 @@ try {
{% for method in interface.methods %}
{% if (with_response and method.response_parameters != None) or
(not with_response and method.response_parameters == None) %}
-{% set request_struct = method|struct_from_method %}
+{% set request_struct = method.param_struct %}
{% if with_response %}
-{% set response_struct = method|response_struct_from_method %}
+{% set response_struct = method.response_param_struct %}
{% endif %}
case {{method|method_ordinal_name}}: {
{% if method.parameters %}
@@ -162,7 +162,7 @@ class {{interface|name}}_Internal {
@Override
public void {{method|name}}({{declare_request_params(method)}}) {
-{% set request_struct = method|struct_from_method %}
+{% set request_struct = method.param_struct %}
{{request_struct|name}} _message = new {{request_struct|name}}();
{% for param in method.parameters %}
_message.{{param|name}} = {{param|name}};
@@ -175,7 +175,7 @@ class {{interface|name}}_Internal {
{{method|method_ordinal_name}},
{{flags_for_method(method, True)}},
0)),
- new {{method|response_struct_from_method|name}}ForwardToCallback(callback));
+ new {{method.response_param_struct|name}}ForwardToCallback(callback));
{% else %}
getMessageReceiver().accept(
_message.serializeWithHeader(
@@ -205,9 +205,9 @@ class {{interface|name}}_Internal {
}
{% for method in interface.methods %}
- {{ struct_def(method|struct_from_method, True)|indent(4) }}
+ {{ struct_def(method.param_struct, True)|indent(4) }}
{% if method.response_parameters != None %}
-{% set response_struct = method|response_struct_from_method %}
+{% set response_struct = method.response_param_struct %}
{{ struct_def(response_struct, True)|indent(4) }}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
index 1d531f5..10ce582 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
@@ -360,8 +360,6 @@ class Generator(generator.Generator):
"is_struct_with_handles": IsStructWithHandles,
"is_union_kind": mojom.IsUnionKind,
"struct_size": lambda ps: ps.GetTotalSize() + _HEADER_SIZE,
- "struct_from_method": generator.GetStructFromMethod,
- "response_struct_from_method": generator.GetResponseStructFromMethod,
"stylize_method": generator.StudlyCapsToCamel,
"to_all_caps": generator.CamelCaseToAllCaps,
"under_to_camel": generator.UnderToCamel,
@@ -377,7 +375,7 @@ class Generator(generator.Generator):
"enums": self.module.enums,
"structs": self.GetStructs(),
"unions": self.module.unions,
- "interfaces": self.module.interfaces,
+ "interfaces": self.GetInterfaces(),
}
@UseJinja("cpp_templates/module.h.tmpl", filters=cpp_filters)
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_dart_generator.py b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_dart_generator.py
index fb1cfd4..9d2fafe 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_dart_generator.py
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_dart_generator.py
@@ -6,7 +6,10 @@
import os
import re
+import shutil
+import sys
+import mojom.generate.constant_resolver as resolver
import mojom.generate.generator as generator
import mojom.generate.module as mojom
import mojom.generate.pack as pack
@@ -329,8 +332,10 @@ def TranslateConstants(token):
return token
-def ExpressionToText(value):
- return TranslateConstants(value)
+def ExpressionToText(token):
+ if isinstance(token, (mojom.EnumValue, mojom.NamedValue)):
+ return str(token.resolved_value)
+ return TranslateConstants(token)
def GetArrayKind(kind, size = None):
if size is None:
@@ -352,6 +357,11 @@ def IsPointerArrayKind(kind):
sub_kind = kind.kind
return mojom.IsObjectKind(sub_kind)
+def GetImportUri(module):
+ elements = module.namespace.split('.')
+ elements.append("%s" % module.name)
+ return os.path.join(*elements)
+
class Generator(generator.Generator):
dart_filters = {
@@ -370,8 +380,6 @@ class Generator(generator.Generator):
'dart_type': DartDeclType,
'name': GetNameForElement,
'interface_response_name': GetInterfaceResponseName,
- 'response_struct_from_method': generator.GetResponseStructFromMethod,
- 'struct_from_method': generator.GetStructFromMethod,
}
def GetParameters(self, args):
@@ -380,9 +388,9 @@ class Generator(generator.Generator):
"imports": self.GetImports(args),
"kinds": self.module.kinds,
"enums": self.module.enums,
- "module": self.module,
+ "module": resolver.ResolveConstants(self.module, ExpressionToText),
"structs": self.GetStructs() + self.GetStructsFromMethods(),
- "interfaces": self.module.interfaces,
+ "interfaces": self.GetInterfaces(),
"imported_interfaces": self.GetImportedInterfaces(),
"imported_from": self.ImportedFrom(),
}
@@ -392,16 +400,21 @@ class Generator(generator.Generator):
return self.GetParameters(args)
def GenerateFiles(self, args):
- self.Write(self.GenerateLibModule(args),
- self.MatchMojomFilePath("%s.dart" % self.module.name))
+ elements = self.module.namespace.split('.')
+ elements.append("%s.dart" % self.module.name)
+ path = os.path.join("dart-gen", *elements)
+ self.Write(self.GenerateLibModule(args), path)
+ link = self.MatchMojomFilePath("%s.dart" % self.module.name)
+ if os.path.exists(os.path.join(self.output_dir, link)):
+ os.unlink(os.path.join(self.output_dir, link))
+ if sys.platform == "win32":
+ shutil.copy(os.path.join(self.output_dir, path),
+ os.path.join(self.output_dir, link))
+ else:
+ os.symlink(os.path.join(self.output_dir, path),
+ os.path.join(self.output_dir, link))
def GetImports(self, args):
- mojo_root_arg = next(
- (x for x in args if x.startswith("--dart_mojo_root")), "")
- (_, _, mojo_root_path) = mojo_root_arg.partition("=")
- if not mojo_root_path.startswith("//"):
- raise Exception("Malformed mojo SDK root: " + mojo_root_path)
- mojo_root_path = mojo_root_path[2:] # strip //
used_names = set()
for each_import in self.module.imports:
simple_name = each_import["module_name"].split(".")[0]
@@ -418,15 +431,7 @@ class Generator(generator.Generator):
each_import["unique_name"] = unique_name + '_mojom'
counter += 1
- # At this point, a module's path is reletive to the root of the repo.
- # However, imports of libraries from the Mojo SDK are always reletive to
- # root of the Mojo SDK, which may be different from the root of the repo.
- # This code uses the --dart_mojo_root argument to ensure that Mojo SDK
- # imports are reletive to the Mojo SDK root.
- path = each_import['module'].path
- if os.path.commonprefix([mojo_root_path, path]) == mojo_root_path:
- path = os.path.relpath(path, mojo_root_path)
- each_import["rebased_path"] = path
+ each_import["rebased_path"] = GetImportUri(each_import['module'])
return self.module.imports
def GetImportedInterfaces(self):
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_go_generator.py b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_go_generator.py
index 559f6eb..183ecd2 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_go_generator.py
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_go_generator.py
@@ -188,30 +188,6 @@ def GetPackagePath(module):
name = module.name.split('.')[0]
return '/'.join(module.path.split('/')[:-1] + [name])
-def GetStructFromMethod(method):
- params_class = "%s_%s_Params" % (GetNameForElement(method.interface),
- GetNameForElement(method))
- struct = mojom.Struct(params_class, module=method.interface.module)
- for param in method.parameters:
- struct.AddField("in%s" % GetNameForElement(param),
- param.kind, param.ordinal)
- struct.packed = pack.PackedStruct(struct)
- struct.bytes = pack.GetByteLayout(struct.packed)
- struct.versions = pack.GetVersionInfo(struct.packed)
- return struct
-
-def GetResponseStructFromMethod(method):
- params_class = "%s_%s_ResponseParams" % (GetNameForElement(method.interface),
- GetNameForElement(method))
- struct = mojom.Struct(params_class, module=method.interface.module)
- for param in method.response_parameters:
- struct.AddField("out%s" % GetNameForElement(param),
- param.kind, param.ordinal)
- struct.packed = pack.PackedStruct(struct)
- struct.bytes = pack.GetByteLayout(struct.packed)
- struct.versions = pack.GetVersionInfo(struct.packed)
- return struct
-
def GetAllConstants(module):
data = [module] + module.structs + module.interfaces
constants = [x.constants for x in data]
@@ -252,50 +228,6 @@ def AddImport(module, element):
name += '_'
_imports[path] = name
-# Scans |module| for elements that require imports and adds all found imports
-# to '_imports' dict. Returns a list of imports that should include the
-# generated go file.
-def GetImports(module):
- # Imports can only be used in structs, constants, enums, interfaces.
- all_structs = list(module.structs)
- for i in module.interfaces:
- for method in i.methods:
- all_structs.append(GetStructFromMethod(method))
- if method.response_parameters:
- all_structs.append(GetResponseStructFromMethod(method))
-
- if len(all_structs) > 0 or len(module.interfaces) > 0:
- _imports['fmt'] = 'fmt'
- _imports['mojo/public/go/bindings'] = 'bindings'
- if len(module.interfaces) > 0:
- _imports['mojo/public/go/system'] = 'system'
- if len(all_structs) > 0:
- _imports['sort'] = 'sort'
-
- for struct in all_structs:
- for field in struct.fields:
- AddImport(module, field.kind)
-# TODO(rogulenko): add these after generating constants and struct defaults.
-# if field.default:
-# AddImport(module, field.default)
-
- for enum in GetAllEnums(module):
- for field in enum.fields:
- if field.value:
- AddImport(module, field.value)
-
-# TODO(rogulenko): add these after generating constants and struct defaults.
-# for constant in GetAllConstants(module):
-# AddImport(module, constant.value)
-
- imports_list = []
- for i in _imports:
- if i.split('/')[-1] == _imports[i]:
- imports_list.append('"%s"' % i)
- else:
- imports_list.append('%s "%s"' % (_imports[i], i))
- return sorted(imports_list)
-
class Generator(generator.Generator):
go_filters = {
'array': lambda kind: mojom.Array(kind),
@@ -315,16 +247,14 @@ class Generator(generator.Generator):
'is_pointer': mojom.IsObjectKind,
'is_struct': mojom.IsStructKind,
'name': GetNameForElement,
- 'response_struct_from_method': GetResponseStructFromMethod,
- 'struct_from_method': GetStructFromMethod,
'tab_indent': lambda s, size = 1: ('\n' + '\t' * size).join(s.splitlines())
}
def GetParameters(self):
return {
'enums': GetAllEnums(self.module),
- 'imports': GetImports(self.module),
- 'interfaces': self.module.interfaces,
+ 'imports': self.GetImports(),
+ 'interfaces': self.GetInterfaces(),
'package': GetPackageName(self.module),
'structs': self.GetStructs(),
}
@@ -348,3 +278,69 @@ class Generator(generator.Generator):
'namespace': self.module.namespace,
'module': self.module,
}
+
+ # Scans |self.module| for elements that require imports and adds all found
+ # imports to '_imports' dict. Returns a list of imports that should include
+ # the generated go file.
+ def GetImports(self):
+ # Imports can only be used in structs, constants, enums, interfaces.
+ all_structs = list(self.module.structs)
+ for i in self.module.interfaces:
+ for method in i.methods:
+ all_structs.append(self._GetStructFromMethod(method))
+ if method.response_parameters:
+ all_structs.append(self._GetResponseStructFromMethod(method))
+
+ if len(all_structs) > 0 or len(self.module.interfaces) > 0:
+ _imports['fmt'] = 'fmt'
+ _imports['mojo/public/go/bindings'] = 'bindings'
+ if len(self.module.interfaces) > 0:
+ _imports['mojo/public/go/system'] = 'system'
+ if len(all_structs) > 0:
+ _imports['sort'] = 'sort'
+
+ for struct in all_structs:
+ for field in struct.fields:
+ AddImport(self.module, field.kind)
+# TODO(rogulenko): add these after generating constants and struct defaults.
+# if field.default:
+# AddImport(self.module, field.default)
+
+ for enum in GetAllEnums(self.module):
+ for field in enum.fields:
+ if field.value:
+ AddImport(self.module, field.value)
+
+# TODO(rogulenko): add these after generating constants and struct defaults.
+# for constant in GetAllConstants(self.module):
+# AddImport(self.module, constant.value)
+
+ imports_list = []
+ for i in _imports:
+ if i.split('/')[-1] == _imports[i]:
+ imports_list.append('"%s"' % i)
+ else:
+ imports_list.append('%s "%s"' % (_imports[i], i))
+ return sorted(imports_list)
+
+ # Overrides the implementation from the base class in order to customize the
+ # struct and field names.
+ def _GetStructFromMethod(self, method):
+ params_class = "%s_%s_Params" % (GetNameForElement(method.interface),
+ GetNameForElement(method))
+ struct = mojom.Struct(params_class, module=method.interface.module)
+ for param in method.parameters:
+ struct.AddField("in%s" % GetNameForElement(param),
+ param.kind, param.ordinal, attributes=param.attributes)
+ return self._AddStructComputedData(False, struct)
+
+ # Overrides the implementation from the base class in order to customize the
+ # struct and field names.
+ def _GetResponseStructFromMethod(self, method):
+ params_class = "%s_%s_ResponseParams" % (
+ GetNameForElement(method.interface), GetNameForElement(method))
+ struct = mojom.Struct(params_class, module=method.interface.module)
+ for param in method.response_parameters:
+ struct.AddField("out%s" % GetNameForElement(param),
+ param.kind, param.ordinal, attributes=param.attributes)
+ return self._AddStructComputedData(False, struct)
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_java_generator.py b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_java_generator.py
index d6712f3..17a62c2 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_java_generator.py
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_java_generator.py
@@ -410,8 +410,6 @@ class Generator(generator.Generator):
'method_ordinal_name': GetMethodOrdinalName,
'name': GetNameForElement,
'new_array': NewArray,
- 'response_struct_from_method': generator.GetResponseStructFromMethod,
- 'struct_from_method': generator.GetStructFromMethod,
}
def GetJinjaExports(self):
@@ -464,7 +462,7 @@ class Generator(generator.Generator):
self.Write(self.GenerateEnumSource(enum),
'%s.java' % GetNameForElement(enum))
- for interface in self.module.interfaces:
+ for interface in self.GetInterfaces():
self.Write(self.GenerateInterfaceSource(interface),
'%s.java' % GetNameForElement(interface))
self.Write(self.GenerateInterfaceInternalSource(interface),
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_js_generator.py b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_js_generator.py
index 77678a7..5315c35 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_js_generator.py
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_js_generator.py
@@ -340,7 +340,7 @@ class Generator(generator.Generator):
"enums": self.module.enums,
"module": self.module,
"structs": self.GetStructs() + self.GetStructsFromMethods(),
- "interfaces": self.module.interfaces,
+ "interfaces": self.GetInterfaces(),
"imported_interfaces": self.GetImportedInterfaces(),
}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py
index cbb1962..6fc5b97 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py
@@ -5,8 +5,8 @@
"""Generates Python source files from a mojom.Module."""
import re
-from itertools import ifilter
+import mojom.generate.constant_resolver as resolver
import mojom.generate.generator as generator
import mojom.generate.data as data
import mojom.generate.module as mojom
@@ -95,7 +95,7 @@ def GetNameForElement(element):
def ExpressionToText(token):
if isinstance(token, (mojom.EnumValue, mojom.NamedValue)):
- return str(token.computed_value)
+ return str(token.resolved_value)
if isinstance(token, mojom.BuiltinValue):
if token.value == 'double.INFINITY' or token.value == 'float.INFINITY':
@@ -191,84 +191,6 @@ def GetFieldGroup(byte):
assert len(byte.packed_fields) == 1
return GetFieldDescriptor(byte.packed_fields[0])
-def ComputeStaticValues(module):
- in_progress = set()
- computed = set()
-
- def GetComputedValue(named_value):
- if isinstance(named_value, mojom.EnumValue):
- field = next(ifilter(lambda field: field.name == named_value.name,
- named_value.enum.fields), None)
- if not field:
- raise RuntimeError(
- 'Unable to get computed value for field %s of enum %s' %
- (named_value.name, named_value.enum.name))
- if field not in computed:
- ResolveEnum(named_value.enum)
- return field.computed_value
- elif isinstance(named_value, mojom.ConstantValue):
- ResolveConstant(named_value.constant)
- named_value.computed_value = named_value.constant.computed_value
- return named_value.computed_value
- else:
- print named_value
-
- def ResolveConstant(constant):
- if constant in computed:
- return
- if constant in in_progress:
- raise RuntimeError('Circular dependency for constant: %s' % constant.name)
- in_progress.add(constant)
- if isinstance(constant.value, (mojom.EnumValue, mojom.ConstantValue)):
- computed_value = GetComputedValue(constant.value)
- else:
- computed_value = ExpressionToText(constant.value)
- constant.computed_value = computed_value
- in_progress.remove(constant)
- computed.add(constant)
-
- def ResolveEnum(enum):
- def ResolveEnumField(enum, field, default_value):
- if field in computed:
- return
- if field in in_progress:
- raise RuntimeError('Circular dependency for enum: %s' % enum.name)
- in_progress.add(field)
- if field.value:
- if isinstance(field.value, mojom.EnumValue):
- computed_value = GetComputedValue(field.value)
- elif isinstance(field.value, str):
- computed_value = int(field.value, 0)
- else:
- raise RuntimeError('Unexpected value: %s' % field.value)
- else:
- computed_value = default_value
- field.computed_value = computed_value
- in_progress.remove(field)
- computed.add(field)
-
- current_value = 0
- for field in enum.fields:
- ResolveEnumField(enum, field, current_value)
- current_value = field.computed_value + 1
-
- for constant in module.constants:
- ResolveConstant(constant)
-
- for enum in module.enums:
- ResolveEnum(enum)
-
- for struct in module.structs:
- for constant in struct.constants:
- ResolveConstant(constant)
- for enum in struct.enums:
- ResolveEnum(enum)
- for field in struct.fields:
- if isinstance(field.default, (mojom.ConstantValue, mojom.EnumValue)):
- field.default.computed_value = GetComputedValue(field.default)
-
- return module
-
def MojomToPythonImport(mojom):
return mojom.replace('.mojom', '_mojom')
@@ -279,8 +201,6 @@ class Generator(generator.Generator):
'field_group': GetFieldGroup,
'fully_qualified_name': GetFullyQualifiedName,
'name': GetNameForElement,
- 'response_struct_from_method': generator.GetResponseStructFromMethod,
- 'struct_from_method': generator.GetStructFromMethod,
}
@UseJinja('python_templates/module.py.tmpl', filters=python_filters)
@@ -288,8 +208,8 @@ class Generator(generator.Generator):
return {
'enums': self.module.enums,
'imports': self.GetImports(),
- 'interfaces': self.module.interfaces,
- 'module': ComputeStaticValues(self.module),
+ 'interfaces': self.GetInterfaces(),
+ 'module': resolver.ResolveConstants(self.module, ExpressionToText),
'namespace': self.module.namespace,
'structs': self.GetStructs(),
}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module.py.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module.py.tmpl
index a475a58..bb0b99d 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module.py.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module.py.tmpl
@@ -42,11 +42,9 @@ class {{interface|name}}(object):
{
'name': '{{method|name}}',
'ordinal': {{method.ordinal}},
-{% set request_struct = method|struct_from_method %}
- 'parameters': {{struct_descriptor(request_struct)|indent(8)}},
+ 'parameters': {{struct_descriptor(method.param_struct)|indent(8)}},
{% if method.response_parameters != None %}
-{% set response_struct = method|response_struct_from_method %}
- 'responses': {{struct_descriptor(response_struct)|indent(8)}},
+ 'responses': {{struct_descriptor(method.response_param_struct)|indent(8)}},
{% endif %}
},
{% endfor %}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module_macros.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module_macros.tmpl
index b42fc30..21c70db 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module_macros.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/python_templates/module_macros.tmpl
@@ -5,7 +5,7 @@
{%- macro enum_values(enum) -%}
[
{% for field in enum.fields %}
- ('{{field.name}}', {{field.computed_value}}),
+ ('{{field.name}}', {{field.resolved_value}}),
{% endfor %}
]
{%- endmacro -%}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/mojom.gni b/third_party/mojo/src/mojo/public/tools/bindings/mojom.gni
index 6c03ea6..1e3bdb6 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/mojom.gni
+++ b/third_party/mojo/src/mojo/public/tools/bindings/mojom.gni
@@ -113,6 +113,7 @@ template("mojom") {
"$generator_root/pylib/mojom/__init__.py",
"$generator_root/pylib/mojom/error.py",
"$generator_root/pylib/mojom/generate/__init__.py",
+ "$generator_root/pylib/mojom/generate/constant_resolver.py",
"$generator_root/pylib/mojom/generate/data.py",
"$generator_root/pylib/mojom/generate/generator.py",
"$generator_root/pylib/mojom/generate/module.py",
@@ -181,7 +182,6 @@ template("mojom") {
generator_js_outputs + generator_python_outputs
args = [
"{{source}}",
- "--dart_mojo_root=${mojo_root}",
"--use_bundled_pylibs",
"-d",
rebase_path("//", root_build_dir),
@@ -336,14 +336,8 @@ template("mojom") {
output,
]
- invoker_import_from = ""
- if (defined(invoker.import_from)) {
- invoker_import_from =
- rebase_path(invoker.import_from, "$root_build_dir/../../", ".")
- }
-
rebase_import_from =
- rebase_path("$root_build_dir/gen/$invoker_import_from", root_build_dir)
+ rebase_path("$root_build_dir/gen/dart-gen", root_build_dir)
if (defined(invoker.sources)) {
rebase_inputs = rebase_path(inputs, root_build_dir)
}
@@ -355,7 +349,7 @@ template("mojom") {
"--output=$rebase_output",
]
if (defined(invoker.sources)) {
- args += [ "--inputs=$rebase_inputs" ]
+ args += [ "--link-inputs=$rebase_inputs" ]
}
}
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/constant_resolver.py b/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/constant_resolver.py
new file mode 100644
index 0000000..c8b21f2
--- /dev/null
+++ b/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/constant_resolver.py
@@ -0,0 +1,91 @@
+# 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.
+
+"""Resolves the values used for constants and enums."""
+
+from itertools import ifilter
+import mojom.generate.module as mojom
+
+def ResolveConstants(module, expression_to_text):
+ in_progress = set()
+ computed = set()
+
+ def GetResolvedValue(named_value):
+ assert isinstance(named_value, (mojom.EnumValue, mojom.ConstantValue))
+ if isinstance(named_value, mojom.EnumValue):
+ field = next(ifilter(lambda field: field.name == named_value.name,
+ named_value.enum.fields), None)
+ if not field:
+ raise RuntimeError(
+ 'Unable to get computed value for field %s of enum %s' %
+ (named_value.name, named_value.enum.name))
+ if field not in computed:
+ ResolveEnum(named_value.enum)
+ return field.resolved_value
+ else:
+ ResolveConstant(named_value.constant)
+ named_value.resolved_value = named_value.constant.resolved_value
+ return named_value.resolved_value
+
+ def ResolveConstant(constant):
+ if constant in computed:
+ return
+ if constant in in_progress:
+ raise RuntimeError('Circular dependency for constant: %s' % constant.name)
+ in_progress.add(constant)
+ if isinstance(constant.value, (mojom.EnumValue, mojom.ConstantValue)):
+ resolved_value = GetResolvedValue(constant.value)
+ else:
+ resolved_value = expression_to_text(constant.value)
+ constant.resolved_value = resolved_value
+ in_progress.remove(constant)
+ computed.add(constant)
+
+ def ResolveEnum(enum):
+ def ResolveEnumField(enum, field, default_value):
+ if field in computed:
+ return
+ if field in in_progress:
+ raise RuntimeError('Circular dependency for enum: %s' % enum.name)
+ in_progress.add(field)
+ if field.value:
+ if isinstance(field.value, mojom.EnumValue):
+ resolved_value = GetResolvedValue(field.value)
+ elif isinstance(field.value, str):
+ resolved_value = int(field.value, 0)
+ else:
+ raise RuntimeError('Unexpected value: %s' % field.value)
+ else:
+ resolved_value = default_value
+ field.resolved_value = resolved_value
+ in_progress.remove(field)
+ computed.add(field)
+
+ current_value = 0
+ for field in enum.fields:
+ ResolveEnumField(enum, field, current_value)
+ current_value = field.resolved_value + 1
+
+ for constant in module.constants:
+ ResolveConstant(constant)
+
+ for enum in module.enums:
+ ResolveEnum(enum)
+
+ for struct in module.structs:
+ for constant in struct.constants:
+ ResolveConstant(constant)
+ for enum in struct.enums:
+ ResolveEnum(enum)
+ for field in struct.fields:
+ if isinstance(field.default, (mojom.ConstantValue, mojom.EnumValue)):
+ field.default.resolved_value = GetResolvedValue(field.default)
+
+ for interface in module.interfaces:
+ for constant in interface.constants:
+ ResolveConstant(constant)
+ for enum in interface.enums:
+ ResolveEnum(enum)
+
+ return module
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/generator.py b/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
index ffb64e7..9c2763d 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
+++ b/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
@@ -12,29 +12,6 @@ import module as mojom
import mojom.fileutil as fileutil
import pack
-def _GetDataHeader(exported, struct):
- struct.packed = pack.PackedStruct(struct)
- struct.bytes = pack.GetByteLayout(struct.packed)
- struct.versions = pack.GetVersionInfo(struct.packed)
- struct.exported = exported
- return struct
-
-def GetStructFromMethod(method):
- """Converts a method's parameters into the fields of a struct."""
- params_class = "%s_%s_Params" % (method.interface.name, method.name)
- struct = mojom.Struct(params_class, module=method.interface.module)
- for param in method.parameters:
- struct.AddField(param.name, param.kind, param.ordinal)
- return _GetDataHeader(False, struct)
-
-def GetResponseStructFromMethod(method):
- """Converts a method's response_parameters into the fields of a struct."""
- params_class = "%s_%s_ResponseParams" % (method.interface.name, method.name)
- struct = mojom.Struct(params_class, module=method.interface.module)
- for param in method.response_parameters:
- struct.AddField(param.name, param.kind, param.ordinal)
- return _GetDataHeader(False, struct)
-
def ExpectedArraySize(kind):
if mojom.IsArrayKind(kind):
return kind.length
@@ -71,13 +48,16 @@ class Generator(object):
result = []
for interface in self.module.interfaces:
for method in interface.methods:
- result.append(GetStructFromMethod(method))
+ result.append(self._GetStructFromMethod(method))
if method.response_parameters != None:
- result.append(GetResponseStructFromMethod(method))
+ result.append(self._GetResponseStructFromMethod(method))
return result
def GetStructs(self):
- return map(partial(_GetDataHeader, True), self.module.structs)
+ return map(partial(self._AddStructComputedData, True), self.module.structs)
+
+ def GetInterfaces(self):
+ return map(self._AddInterfaceComputedData, self.module.interfaces)
# Prepend the filename with a directory that matches the directory of the
# original .mojom file, relative to the import root.
@@ -101,3 +81,51 @@ class Generator(object):
def GetGlobals(self):
"""Returns global mappings for the template generation."""
return {}
+
+ def _AddStructComputedData(self, exported, struct):
+ """Adds computed data to the given struct. The data is computed once and
+ used repeatedly in the generation process."""
+ struct.packed = pack.PackedStruct(struct)
+ struct.bytes = pack.GetByteLayout(struct.packed)
+ struct.versions = pack.GetVersionInfo(struct.packed)
+ struct.exported = exported
+ return struct
+
+ def _AddInterfaceComputedData(self, interface):
+ """Adds computed data to the given interface. The data is computed once and
+ used repeatedly in the generation process."""
+ interface.version = 0
+ for method in interface.methods:
+ if method.min_version is not None:
+ interface.version = max(interface.version, method.min_version)
+
+ method.param_struct = self._GetStructFromMethod(method)
+ interface.version = max(interface.version,
+ method.param_struct.versions[-1].version)
+
+ if method.response_parameters is not None:
+ method.response_param_struct = self._GetResponseStructFromMethod(method)
+ interface.version = max(
+ interface.version,
+ method.response_param_struct.versions[-1].version)
+ else:
+ method.response_param_struct = None
+ return interface
+
+ def _GetStructFromMethod(self, method):
+ """Converts a method's parameters into the fields of a struct."""
+ params_class = "%s_%s_Params" % (method.interface.name, method.name)
+ struct = mojom.Struct(params_class, module=method.interface.module)
+ for param in method.parameters:
+ struct.AddField(param.name, param.kind, param.ordinal,
+ attributes=param.attributes)
+ return self._AddStructComputedData(False, struct)
+
+ def _GetResponseStructFromMethod(self, method):
+ """Converts a method's response_parameters into the fields of a struct."""
+ params_class = "%s_%s_ResponseParams" % (method.interface.name, method.name)
+ struct = mojom.Struct(params_class, module=method.interface.module)
+ for param in method.response_parameters:
+ struct.AddField(param.name, param.kind, param.ordinal,
+ attributes=param.attributes)
+ return self._AddStructComputedData(False, struct)
diff --git a/third_party/mojo/src/mojo/public/tools/gn/zip.py b/third_party/mojo/src/mojo/public/tools/gn/zip.py
index a73f801..12c1879 100755
--- a/third_party/mojo/src/mojo/public/tools/gn/zip.py
+++ b/third_party/mojo/src/mojo/public/tools/gn/zip.py
@@ -13,13 +13,18 @@ import os
import sys
import zipfile
-def DoZip(inputs, zip_inputs, output, base_dir):
+def DoZip(inputs, link_inputs, zip_inputs, output, base_dir):
files = []
with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) as outfile:
for f in inputs:
file_name = os.path.relpath(f, base_dir)
files.append(file_name)
outfile.write(f, file_name)
+ for f in link_inputs:
+ realf = os.path.realpath(f) # Resolve symlinks.
+ file_name = os.path.relpath(realf, base_dir)
+ files.append(file_name)
+ outfile.write(realf, file_name)
for zf_name in zip_inputs:
with zipfile.ZipFile(zf_name, 'r') as zf:
for f in zf.namelist():
@@ -33,6 +38,8 @@ def main():
parser = optparse.OptionParser()
parser.add_option('--inputs', help='List of files to archive.')
+ parser.add_option('--link-inputs',
+ help='List of files to archive. Symbolic links are resolved.')
parser.add_option('--zip-inputs', help='List of zip files to re-archive.')
parser.add_option('--output', help='Path to output archive.')
parser.add_option('--base-dir',
@@ -44,13 +51,16 @@ def main():
inputs = []
if (options.inputs):
inputs = ast.literal_eval(options.inputs)
+ link_inputs = []
+ if options.link_inputs:
+ link_inputs = ast.literal_eval(options.link_inputs)
zip_inputs = []
if options.zip_inputs:
zip_inputs = ast.literal_eval(options.zip_inputs)
output = options.output
base_dir = options.base_dir
- DoZip(inputs, zip_inputs, output, base_dir)
+ DoZip(inputs, link_inputs, zip_inputs, output, base_dir)
if __name__ == '__main__':
sys.exit(main())
diff --git a/third_party/mojo_services/DEPS b/third_party/mojo_services/DEPS
index d715b1f..420ef6d 100644
--- a/third_party/mojo_services/DEPS
+++ b/third_party/mojo_services/DEPS
@@ -5,6 +5,7 @@ include_rules = [
"+mojo",
# internal includes.
+ "+http_server",
"+geometry",
"+input_events",
"+surfaces",
@@ -17,4 +18,4 @@ specific_include_rules = {
"view_manager_test_suite\.cc": [
"+ui/gfx/x/x11_connection.h",
],
-} \ No newline at end of file
+}
diff --git a/third_party/mojo_services/src/accessibility/public/interfaces/BUILD.gn b/third_party/mojo_services/src/accessibility/public/interfaces/BUILD.gn
index f2c1ba8..2b29c1a 100644
--- a/third_party/mojo_services/src/accessibility/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/accessibility/public/interfaces/BUILD.gn
@@ -15,6 +15,4 @@ mojom("interfaces") {
deps = [
"../../../geometry/public/interfaces",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/clipboard/public/interfaces/BUILD.gn b/third_party/mojo_services/src/clipboard/public/interfaces/BUILD.gn
index 4edbf63..16fe33b 100644
--- a/third_party/mojo_services/src/clipboard/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/clipboard/public/interfaces/BUILD.gn
@@ -9,6 +9,4 @@ mojom("interfaces") {
sources = [
"clipboard.mojom",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/content_handler/public/interfaces/BUILD.gn b/third_party/mojo_services/src/content_handler/public/interfaces/BUILD.gn
index ad1bb9a..c58507a 100644
--- a/third_party/mojo_services/src/content_handler/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/content_handler/public/interfaces/BUILD.gn
@@ -23,6 +23,4 @@ mojom("interfaces") {
]
mojo_sdk_deps = [ "mojo/public/interfaces/application" ]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/geometry/public/interfaces/BUILD.gn b/third_party/mojo_services/src/geometry/public/interfaces/BUILD.gn
index 217eb27..9047ee2 100644
--- a/third_party/mojo_services/src/geometry/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/geometry/public/interfaces/BUILD.gn
@@ -9,6 +9,4 @@ mojom("interfaces") {
sources = [
"geometry.mojom",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/gpu/public/interfaces/BUILD.gn b/third_party/mojo_services/src/gpu/public/interfaces/BUILD.gn
index b782146..ec061df 100644
--- a/third_party/mojo_services/src/gpu/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/gpu/public/interfaces/BUILD.gn
@@ -19,6 +19,4 @@ mojom("interfaces") {
deps = [
"../../../geometry/public/interfaces",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/http_server/public/cpp/http_server_util.h b/third_party/mojo_services/src/http_server/public/cpp/http_server_util.h
index 03ee1d1..e2041e8a 100644
--- a/third_party/mojo_services/src/http_server/public/cpp/http_server_util.h
+++ b/third_party/mojo_services/src/http_server/public/cpp/http_server_util.h
@@ -5,7 +5,7 @@
#ifndef SERVICES_HTTP_SERVER_PUBLIC_HTTP_SERVER_UTIL_H_
#define SERVICES_HTTP_SERVER_PUBLIC_HTTP_SERVER_UTIL_H_
-#include "mojo/services/http_server/public/interfaces/http_response.mojom.h"
+#include "http_server/public/interfaces/http_response.mojom.h"
namespace http_server {
diff --git a/third_party/mojo_services/src/http_server/public/cpp/lib/http_server_util.cc b/third_party/mojo_services/src/http_server/public/cpp/lib/http_server_util.cc
index 8073fd2..4307bea 100644
--- a/third_party/mojo_services/src/http_server/public/cpp/lib/http_server_util.cc
+++ b/third_party/mojo_services/src/http_server/public/cpp/lib/http_server_util.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "mojo/services/http_server/public/cpp/http_server_util.h"
+#include "http_server/public/cpp/http_server_util.h"
#include "mojo/public/cpp/environment/logging.h"
#include "mojo/public/cpp/system/data_pipe.h"
diff --git a/third_party/mojo_services/src/http_server/public/interfaces/BUILD.gn b/third_party/mojo_services/src/http_server/public/interfaces/BUILD.gn
index a02039e..79aa6a6 100644
--- a/third_party/mojo_services/src/http_server/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/http_server/public/interfaces/BUILD.gn
@@ -24,6 +24,4 @@ mojom("interfaces") {
deps = [
"$mojo_network_service_root/network/public/interfaces",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/input_events/public/interfaces/BUILD.gn b/third_party/mojo_services/src/input_events/public/interfaces/BUILD.gn
index 5f0f22d..5ef09eb 100644
--- a/third_party/mojo_services/src/input_events/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/input_events/public/interfaces/BUILD.gn
@@ -17,6 +17,4 @@ mojom("interfaces") {
deps = [
"../../../geometry/public/interfaces",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/native_viewport/public/interfaces/BUILD.gn b/third_party/mojo_services/src/native_viewport/public/interfaces/BUILD.gn
index 5603e17..86ff870 100644
--- a/third_party/mojo_services/src/native_viewport/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/native_viewport/public/interfaces/BUILD.gn
@@ -18,6 +18,4 @@ mojom("interfaces") {
"../../../input_events/public/interfaces",
"../../../surfaces/public/interfaces:surface_id",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/navigation/public/interfaces/BUILD.gn b/third_party/mojo_services/src/navigation/public/interfaces/BUILD.gn
index 61158f3..19b9f8a 100644
--- a/third_party/mojo_services/src/navigation/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/navigation/public/interfaces/BUILD.gn
@@ -21,6 +21,4 @@ mojom("interfaces") {
deps = [
"$mojo_network_service_root/network/public/interfaces",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/surfaces/public/interfaces/BUILD.gn b/third_party/mojo_services/src/surfaces/public/interfaces/BUILD.gn
index 36c8707..7902a7a 100644
--- a/third_party/mojo_services/src/surfaces/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/surfaces/public/interfaces/BUILD.gn
@@ -20,14 +20,10 @@ mojom("interfaces") {
"../../../gpu/public/interfaces",
"../../../native_viewport/public/interfaces",
]
-
- import_from = mojo_root
}
mojom("surface_id") {
sources = [
"surface_id.mojom",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/view_manager/public/cpp/BUILD.gn b/third_party/mojo_services/src/view_manager/public/cpp/BUILD.gn
index 189e827..cbab611 100644
--- a/third_party/mojo_services/src/view_manager/public/cpp/BUILD.gn
+++ b/third_party/mojo_services/src/view_manager/public/cpp/BUILD.gn
@@ -52,7 +52,11 @@ mojo_sdk_source_set("cpp") {
}
source_set("common") {
+ configs += [ "../../../public/build/config:mojo_services" ]
+
sources = [
+ "keys.cc",
+ "keys.h",
"types.h",
]
}
diff --git a/third_party/mojo_services/src/view_manager/public/cpp/keys.cc b/third_party/mojo_services/src/view_manager/public/cpp/keys.cc
new file mode 100644
index 0000000..5ed54ef
--- /dev/null
+++ b/third_party/mojo_services/src/view_manager/public/cpp/keys.cc
@@ -0,0 +1,12 @@
+// 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.
+
+#include "view_manager/public/cpp/keys.h"
+
+namespace mojo {
+
+extern const char kViewManagerKeyWantsTouchEvents[] =
+ "view-manager-key-wants-touch-events";
+
+} // namespace mojo
diff --git a/third_party/mojo_services/src/view_manager/public/cpp/keys.h b/third_party/mojo_services/src/view_manager/public/cpp/keys.h
new file mode 100644
index 0000000..77ca346f
--- /dev/null
+++ b/third_party/mojo_services/src/view_manager/public/cpp/keys.h
@@ -0,0 +1,14 @@
+// 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.
+
+#ifndef MOJO_SERVICES_VIEW_MANAGER_PUBLIC_CPP_KEYS_H_
+#define MOJO_SERVICES_VIEW_MANAGER_PUBLIC_CPP_KEYS_H_
+
+namespace mojo {
+
+extern const char kViewManagerKeyWantsTouchEvents[];
+
+} // namespace mojo
+
+#endif // MOJO_SERVICES_VIEW_MANAGER_PUBLIC_CPP_KEYS_H_
diff --git a/third_party/mojo_services/src/view_manager/public/interfaces/BUILD.gn b/third_party/mojo_services/src/view_manager/public/interfaces/BUILD.gn
index eff5f62..177066b 100644
--- a/third_party/mojo_services/src/view_manager/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/view_manager/public/interfaces/BUILD.gn
@@ -22,6 +22,4 @@ mojom("interfaces") {
"../../../native_viewport/public/interfaces",
"../../../surfaces/public/interfaces:surface_id",
]
-
- import_from = mojo_root
}
diff --git a/third_party/mojo_services/src/window_manager/public/interfaces/BUILD.gn b/third_party/mojo_services/src/window_manager/public/interfaces/BUILD.gn
index 3cf56dad..b97f069 100644
--- a/third_party/mojo_services/src/window_manager/public/interfaces/BUILD.gn
+++ b/third_party/mojo_services/src/window_manager/public/interfaces/BUILD.gn
@@ -19,6 +19,4 @@ mojom("interfaces") {
"../../../geometry/public/interfaces",
"../../../input_events/public/interfaces",
]
-
- import_from = mojo_root
}