diff options
author | sky <sky@chromium.org> | 2015-04-17 09:08:06 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-17 16:09:08 +0000 |
commit | a38136b7f2fd5a7a425bf06bc54c10741bfc22bd (patch) | |
tree | 72963fde5a9f0d6de75275c65e9e806c903fa07c /third_party | |
parent | 3f26f4d816781b818c0ec2ba7145ba8acd971f97 (diff) | |
download | chromium_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')
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 } |