diff options
26 files changed, 238 insertions, 188 deletions
diff --git a/remoting/DEPS b/remoting/DEPS index 6bfe57b..d929d84 100644 --- a/remoting/DEPS +++ b/remoting/DEPS @@ -4,10 +4,9 @@ include_rules = [ "+google/protobuf", "+media/base", "+net", - "+jingle", - "+talk", - "+third_party/npapi", + "+third_party/npapi" + "+third_party/protobuf2", "+third_party/zlib", ] diff --git a/remoting/base/capture_data.h b/remoting/base/capture_data.h index e99aa38..0d707f9 100644 --- a/remoting/base/capture_data.h +++ b/remoting/base/capture_data.h @@ -9,8 +9,8 @@ #include "base/basictypes.h" #include "base/ref_counted.h" -#include "remoting/base/protocol/chromotocol.pb.h" #include "remoting/base/types.h" +#include "remoting/proto/event.pb.h" namespace remoting { diff --git a/remoting/base/decoder.h b/remoting/base/decoder.h index 355f8ea..0a6ceff 100644 --- a/remoting/base/decoder.h +++ b/remoting/base/decoder.h @@ -9,7 +9,7 @@ #include "base/scoped_ptr.h" #include "gfx/rect.h" #include "media/base/video_frame.h" -#include "remoting/base/protocol/chromotocol.pb.h" +#include "remoting/proto/event.pb.h" namespace remoting { diff --git a/remoting/base/encoder.h b/remoting/base/encoder.h index 4d2cf85..f9d4043 100644 --- a/remoting/base/encoder.h +++ b/remoting/base/encoder.h @@ -8,7 +8,8 @@ #include "base/basictypes.h" #include "base/callback.h" #include "media/base/data_buffer.h" -#include "remoting/base/protocol/chromotocol.pb.h" +// TODO(hclam): Should not depend on internal.pb.h. +#include "remoting/proto/internal.pb.h" namespace media { class DataBuffer; diff --git a/remoting/base/encoder_verbatim.cc b/remoting/base/encoder_verbatim.cc index b636670..17a2da4 100644 --- a/remoting/base/encoder_verbatim.cc +++ b/remoting/base/encoder_verbatim.cc @@ -9,7 +9,6 @@ #include "media/base/data_buffer.h" #include "remoting/base/capture_data.h" #include "remoting/base/util.h" -#include "remoting/base/protocol/chromotocol.pb.h" namespace remoting { diff --git a/remoting/base/encoder_vp8.h b/remoting/base/encoder_vp8.h index ae29c63..6c3357c 100644 --- a/remoting/base/encoder_vp8.h +++ b/remoting/base/encoder_vp8.h @@ -6,7 +6,6 @@ #define REMOTING_BASE_ENCODER_VP8_H_ #include "remoting/base/encoder.h" -#include "remoting/base/protocol/chromotocol.pb.h" typedef struct vpx_codec_ctx vpx_codec_ctx_t; typedef struct vpx_image vpx_image_t; diff --git a/remoting/base/encoder_zlib.cc b/remoting/base/encoder_zlib.cc index f807e85..575d1f1 100644 --- a/remoting/base/encoder_zlib.cc +++ b/remoting/base/encoder_zlib.cc @@ -10,7 +10,6 @@ #include "remoting/base/capture_data.h" #include "remoting/base/compressor_zlib.h" #include "remoting/base/util.h" -#include "remoting/base/protocol/chromotocol.pb.h" namespace remoting { diff --git a/remoting/base/protocol/chromotocol.gyp b/remoting/base/protocol/chromotocol.gyp deleted file mode 100644 index fbcea21..0000000 --- a/remoting/base/protocol/chromotocol.gyp +++ /dev/null @@ -1,142 +0,0 @@ -# Copyright (c) 2010 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. - -{ - 'variables': { - 'chromium_code': 1, - 'out_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out/remoting/base/protocol', - }, - 'targets': [ - { - # Protobuf compiler / generate rule for chromoting.proto. - 'target_name': 'chromotocol_proto', - 'type': 'none', - 'sources': [ - 'chromotocol.proto', - ], - 'rules': [ - { - 'rule_name': 'genproto', - 'extension': 'proto', - 'inputs': [ - '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', - ], - 'outputs': [ - '<(PRODUCT_DIR)/pyproto/chromotocol_pb/<(RULE_INPUT_ROOT)_pb2.py', - '<(out_dir)/<(RULE_INPUT_ROOT).pb.cc', - '<(out_dir)/<(RULE_INPUT_ROOT).pb.h', - ], - 'action': [ - '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', - '--proto_path=.', - './<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)', - '--cpp_out=<(out_dir)', - '--python_out=<(PRODUCT_DIR)/pyproto/chromotocol_pb', - ], - 'message': 'Generating C++ and Python code from <(RULE_INPUT_PATH)', - }, - ], - 'dependencies': [ - '../../../third_party/protobuf/protobuf.gyp:protoc#host', - ], - # This target exports a hard dependency because it generates header - # files. - 'hard_dependency': 1, - }, - - { - 'target_name': 'chromotocol_proto_lib', - 'type': '<(library)', - 'export_dependent_settings': [ - '../../../third_party/protobuf/protobuf.gyp:protobuf_lite', - 'chromotocol_proto', - ], - 'dependencies': [ - '../../../third_party/protobuf/protobuf.gyp:protobuf_lite', - 'chromotocol_proto', - ], - # This target exports a hard dependency because depedents require - # chromotocol_proto to compile. - 'hard_dependency': 1, - 'direct_dependent_settings': { - 'include_dirs': [ - '<(SHARED_INTERMEDIATE_DIR)/protoc_out', - ], - }, - 'sources': [ - '<(out_dir)/chromotocol.pb.cc', - '<(out_dir)/chromotocol.pb.h', - ], - }, - - { - # Protobuf compiler / generate rule for trace.proto. - 'target_name': 'trace_proto', - 'type': 'none', - 'sources': [ - 'trace.proto', - ], - 'rules': [ - { - 'rule_name': 'genproto', - 'extension': 'proto', - 'inputs': [ - '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', - ], - 'outputs': [ - '<(PRODUCT_DIR)/pyproto/<(RULE_INPUT_ROOT)_pb/' - '<(RULE_INPUT_ROOT)_pb2.py', - '<(out_dir)/<(RULE_INPUT_ROOT).pb.cc', - '<(out_dir)/<(RULE_INPUT_ROOT).pb.h', - ], - 'action': [ - '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', - '--proto_path=.', - './<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)', - '--cpp_out=<(out_dir)', - '--python_out=<(PRODUCT_DIR)/pyproto/<(RULE_INPUT_ROOT)_pb', - ], - 'message': 'Generating C++ and Python code from <(RULE_INPUT_PATH)', - }, - ], - 'dependencies': [ - '../../../third_party/protobuf/protobuf.gyp:protoc#host', - ], - # This target exports a hard dependency because it generates header - # files. - 'hard_dependency': 1, - }, - - { - 'target_name': 'trace_proto_lib', - 'type': '<(library)', - 'export_dependent_settings': [ - '../../../third_party/protobuf/protobuf.gyp:protobuf_lite', - 'trace_proto', - ], - 'dependencies': [ - '../../../third_party/protobuf/protobuf.gyp:protobuf_lite', - 'trace_proto', - ], - # This target exports a hard dependency because depedents require - # chromotocol_proto to compile. - 'hard_dependency': 1, - 'direct_dependent_settings': { - 'include_dirs': [ - '<(SHARED_INTERMEDIATE_DIR)/protoc_out', - ], - }, - 'sources': [ - '<(out_dir)/trace.pb.cc', - '<(out_dir)/trace.pb.h', - ], - }, - ], -} - -# Local Variables: -# tab-width:2 -# indent-tabs-mode:nil -# End: -# vim: set expandtab tabstop=2 shiftwidth=2: diff --git a/remoting/base/tracer.h b/remoting/base/tracer.h index 86be35d..4333f25 100644 --- a/remoting/base/tracer.h +++ b/remoting/base/tracer.h @@ -59,7 +59,7 @@ #include "base/task.h" #include "base/scoped_ptr.h" #include "base/thread_local.h" -#include "remoting/base/protocol/trace.pb.h" +#include "remoting/proto/trace.pb.h" namespace remoting { diff --git a/remoting/base/util.h b/remoting/base/util.h index adfbc89..e3db289 100644 --- a/remoting/base/util.h +++ b/remoting/base/util.h @@ -5,7 +5,7 @@ #ifndef REMOTING_BASE_UTIL_H_ #define REMOTING_BASE_UTIL_H_ -#include "remoting/base/protocol/chromotocol.pb.h" +#include "remoting/proto/event.pb.h" namespace remoting { diff --git a/remoting/client/chromoting_view_unittest.cc b/remoting/client/chromoting_view_unittest.cc index c376d10..4b31435 100644 --- a/remoting/client/chromoting_view_unittest.cc +++ b/remoting/client/chromoting_view_unittest.cc @@ -4,8 +4,8 @@ #include "base/scoped_ptr.h" #include "remoting/base/decoder.h" -#include "remoting/base/protocol/chromotocol.pb.h" #include "remoting/client/chromoting_view.h" +#include "remoting/proto/internal.pb.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" diff --git a/remoting/client/input_handler.cc b/remoting/client/input_handler.cc index 7f6f7ab..69c70c5 100644 --- a/remoting/client/input_handler.cc +++ b/remoting/client/input_handler.cc @@ -6,6 +6,8 @@ #include "remoting/client/chromoting_view.h" #include "remoting/client/host_connection.h" +// TODO(hclam): Should not include internal.pb.h. +#include "remoting/proto/internal.pb.h" namespace remoting { diff --git a/remoting/client/input_handler.h b/remoting/client/input_handler.h index 61b9bb9..6f2e376 100644 --- a/remoting/client/input_handler.h +++ b/remoting/client/input_handler.h @@ -7,7 +7,7 @@ #include "base/basictypes.h" #include "base/task.h" -#include "remoting/base/protocol/chromotocol.pb.h" +#include "remoting/proto/event.pb.h" namespace remoting { diff --git a/remoting/client/rectangle_update_decoder.cc b/remoting/client/rectangle_update_decoder.cc index aa87c4a..8471991 100644 --- a/remoting/client/rectangle_update_decoder.cc +++ b/remoting/client/rectangle_update_decoder.cc @@ -9,7 +9,6 @@ #include "media/base/callback.h" #include "remoting/base/decoder.h" #include "remoting/base/decoder_row_based.h" -#include "remoting/base/protocol/chromotocol.pb.h" #include "remoting/base/tracer.h" #include "remoting/base/util.h" #include "remoting/client/frame_consumer.h" diff --git a/remoting/host/client_connection.h b/remoting/host/client_connection.h index 44bb761..6eb6b0d 100644 --- a/remoting/host/client_connection.h +++ b/remoting/host/client_connection.h @@ -11,7 +11,7 @@ #include "base/message_loop.h" #include "base/ref_counted.h" #include "base/scoped_ptr.h" -#include "remoting/base/protocol/chromotocol.pb.h" +#include "remoting/proto/internal.pb.h" #include "remoting/protocol/chromoting_connection.h" #include "remoting/protocol/stream_reader.h" #include "remoting/protocol/stream_writer.h" diff --git a/remoting/host/event_executor_win.cc b/remoting/host/event_executor_win.cc index bf5df99..283d4aa 100644 --- a/remoting/host/event_executor_win.cc +++ b/remoting/host/event_executor_win.cc @@ -8,6 +8,8 @@ #include "app/keyboard_codes.h" #include "base/stl_util-inl.h" #include "remoting/host/capturer.h" +// TODO(hclam): Should not include internal.pb.h here. +#include "remoting/proto/internal.pb.h" namespace remoting { diff --git a/remoting/host/session_manager.h b/remoting/host/session_manager.h index c39ca3b..064870f 100644 --- a/remoting/host/session_manager.h +++ b/remoting/host/session_manager.h @@ -13,8 +13,9 @@ #include "base/scoped_ptr.h" #include "base/time.h" #include "remoting/base/encoder.h" -#include "remoting/base/protocol/chromotocol.pb.h" #include "remoting/host/capturer.h" +// TODO(hclam): This class should not know the internal protobuf types. +#include "remoting/proto/internal.pb.h" namespace media { diff --git a/remoting/proto/chromotocol.gyp b/remoting/proto/chromotocol.gyp new file mode 100644 index 0000000..3d55d21 --- /dev/null +++ b/remoting/proto/chromotocol.gyp @@ -0,0 +1,83 @@ +# Copyright (c) 2010 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. + +{ + 'variables': { + 'chromium_code': 1, + 'out_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out/remoting/proto', + }, + 'targets': [ + { + # Protobuf compiler / generate rule for chromoting.proto. + 'target_name': 'chromotocol_proto', + 'type': 'none', + 'sources': [ + 'control.proto', + 'event.proto', + 'internal.proto', + ], + 'rules': [ + { + 'rule_name': 'genproto', + 'extension': 'proto', + 'inputs': [ + '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', + ], + 'outputs': [ + '<(out_dir)/<(RULE_INPUT_ROOT).pb.cc', + '<(out_dir)/<(RULE_INPUT_ROOT).pb.h', + ], + 'action': [ + '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', + '--proto_path=.', + './<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)', + '--cpp_out=<(out_dir)', + ], + 'message': 'Generating C++ and Python code from <(RULE_INPUT_PATH)', + }, + ], + 'dependencies': [ + '<(DEPTH)/third_party/protobuf/protobuf.gyp:protoc#host', + ], + 'direct_dependent_settings': { + 'include_dirs': [ + '<(SHARED_INTERMEDIATE_DIR)/protoc_out', + ], + }, + # This target exports a hard dependency because it generates header + # files. + 'hard_dependency': 1, + }, + + { + 'target_name': 'chromotocol_proto_lib', + 'type': '<(library)', + 'export_dependent_settings': [ + '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite', + 'chromotocol_proto', + ], + 'dependencies': [ + '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite', + 'chromotocol_proto', + ], + # This target exports a hard dependency because depedents require + # chromotocol_proto to compile. + 'hard_dependency': 1, + 'sources': [ + '<(out_dir)/control.pb.cc', + '<(out_dir)/control.pb.h', + '<(out_dir)/event.pb.cc', + '<(out_dir)/event.pb.h', + '<(out_dir)/internal.pb.cc', + '<(out_dir)/internal.pb.h', + ], + }, + ], +} + +# Local Variables: +# tab-width:2 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=2 shiftwidth=2: diff --git a/remoting/proto/control.proto b/remoting/proto/control.proto new file mode 100644 index 0000000..df0787c --- /dev/null +++ b/remoting/proto/control.proto @@ -0,0 +1,13 @@ +// Copyright (c) 2010 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. +// +// Protocol for control messages. + +syntax = "proto2"; + +option optimize_for = LITE_RUNTIME; + +package remoting; + +// TODO(hclam): Define control messages.
\ No newline at end of file diff --git a/remoting/base/protocol/chromotocol.proto b/remoting/proto/event.proto index 00986ac..b961335 100644 --- a/remoting/base/protocol/chromotocol.proto +++ b/remoting/proto/event.proto @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Protocol for communication between chromoting client and host. +// Protocol for event messages. syntax = "proto2"; @@ -145,18 +145,6 @@ message RectangleUpdatePacket { optional bytes encoded_rect = 4; } -// Defines the message that is sent from the host to the client. -// Only one of these messages should be present. -// NEXT ID: 5 -message ChromotingHostMessage { - optional InitClientMessage init_client= 1; - optional BeginUpdateStreamMessage begin_update_stream = 2; - optional EndUpdateStreamMessage end_update_stream = 3; - optional UpdateStreamPacketMessage update_stream_packet = 4; - - optional RectangleUpdatePacket rectangle_update = 5; -} - // Defines a keyboard event. // NEXT ID: 3 message KeyEvent { @@ -212,15 +200,3 @@ message MouseDownEvent { message MouseUpEvent { required MouseButton button = 1; } - -// Defines the message that is sent from the client to the host. -// Only one of the optional messages should be present. -// NEXT ID: 7 -message ChromotingClientMessage { - optional KeyEvent key_event = 1; - optional MouseSetPositionEvent mouse_set_position_event = 2; - optional MouseMoveEvent mouse_move_event = 3; - optional MouseWheelEvent mouse_wheel_event = 4; - optional MouseDownEvent mouse_down_event = 5; - optional MouseUpEvent mouse_up_event = 6; -} diff --git a/remoting/proto/internal.proto b/remoting/proto/internal.proto new file mode 100644 index 0000000..b98b696 --- /dev/null +++ b/remoting/proto/internal.proto @@ -0,0 +1,38 @@ +// Copyright (c) 2010 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. +// +// Internal messages as a unit for transmission in the wire. + +syntax = "proto2"; + +import "control.proto"; +import "event.proto"; + +option optimize_for = LITE_RUNTIME; + +package remoting; + +// Defines the message that is sent from the host to the client. +// Only one of these messages should be present. +// NEXT ID: 5 +message ChromotingHostMessage { + optional InitClientMessage init_client= 1; + optional BeginUpdateStreamMessage begin_update_stream = 2; + optional EndUpdateStreamMessage end_update_stream = 3; + optional UpdateStreamPacketMessage update_stream_packet = 4; + + optional RectangleUpdatePacket rectangle_update = 5; +} + +// Defines the message that is sent from the client to the host. +// Only one of the optional messages should be present. +// NEXT ID: 7 +message ChromotingClientMessage { + optional KeyEvent key_event = 1; + optional MouseSetPositionEvent mouse_set_position_event = 2; + optional MouseMoveEvent mouse_move_event = 3; + optional MouseWheelEvent mouse_wheel_event = 4; + optional MouseDownEvent mouse_down_event = 5; + optional MouseUpEvent mouse_up_event = 6; +} diff --git a/remoting/proto/trace.gyp b/remoting/proto/trace.gyp new file mode 100644 index 0000000..a417a5b --- /dev/null +++ b/remoting/proto/trace.gyp @@ -0,0 +1,80 @@ +# Copyright (c) 2010 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. + +{ + 'variables': { + 'chromium_code': 1, + 'out_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out/remoting/proto', + }, + 'targets': [ + { + # Protobuf compiler / generate rule for trace.proto. + 'target_name': 'trace_proto', + 'type': 'none', + 'sources': [ + 'trace.proto', + ], + 'rules': [ + { + 'rule_name': 'genproto', + 'extension': 'proto', + 'inputs': [ + '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', + ], + 'outputs': [ + '<(PRODUCT_DIR)/pyproto/<(RULE_INPUT_ROOT)_pb/' + '<(RULE_INPUT_ROOT)_pb2.py', + '<(out_dir)/<(RULE_INPUT_ROOT).pb.cc', + '<(out_dir)/<(RULE_INPUT_ROOT).pb.h', + ], + 'action': [ + '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', + '--proto_path=.', + './<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)', + '--cpp_out=<(out_dir)', + '--python_out=<(PRODUCT_DIR)/pyproto/<(RULE_INPUT_ROOT)_pb', + ], + 'message': 'Generating C++ and Python code from <(RULE_INPUT_PATH)', + }, + ], + 'dependencies': [ + '<(DEPTH)/third_party/protobuf/protobuf.gyp:protoc#host', + ], + # This target exports a hard dependency because it generates header + # files. + 'hard_dependency': 1, + }, + + { + 'target_name': 'trace_proto_lib', + 'type': '<(library)', + 'export_dependent_settings': [ + '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite', + 'trace_proto', + ], + 'dependencies': [ + '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite', + 'trace_proto', + ], + # This target exports a hard dependency because depedents require + # chromotocol_proto to compile. + 'hard_dependency': 1, + 'direct_dependent_settings': { + 'include_dirs': [ + '<(SHARED_INTERMEDIATE_DIR)/protoc_out', + ], + }, + 'sources': [ + '<(out_dir)/trace.pb.cc', + '<(out_dir)/trace.pb.h', + ], + }, + ], +} + +# Local Variables: +# tab-width:2 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=2 shiftwidth=2: diff --git a/remoting/base/protocol/trace.proto b/remoting/proto/trace.proto index dbbabcf..dbbabcf 100644 --- a/remoting/base/protocol/trace.proto +++ b/remoting/proto/trace.proto diff --git a/remoting/protocol/messages_decoder.h b/remoting/protocol/messages_decoder.h index 66014f6..ea1b2c5 100644 --- a/remoting/protocol/messages_decoder.h +++ b/remoting/protocol/messages_decoder.h @@ -11,7 +11,7 @@ #include "base/ref_counted.h" #include "google/protobuf/message_lite.h" #include "net/base/io_buffer.h" -#include "remoting/base/protocol/chromotocol.pb.h" +#include "remoting/proto/internal.pb.h" namespace remoting { diff --git a/remoting/protocol/util.h b/remoting/protocol/util.h index ef15e45..9dee8b5a 100644 --- a/remoting/protocol/util.h +++ b/remoting/protocol/util.h @@ -7,7 +7,8 @@ #include "google/protobuf/message_lite.h" #include "net/base/io_buffer.h" -#include "remoting/base/protocol/chromotocol.pb.h" +// TODO(hclam): Should not include internal.pb.h. +#include "remoting/proto/internal.pb.h" // This file defines utility methods used for encoding and decoding the protocol // used in Chromoting. diff --git a/remoting/remoting.gyp b/remoting/remoting.gyp index 951ddd8..b45bdce 100644 --- a/remoting/remoting.gyp +++ b/remoting/remoting.gyp @@ -117,14 +117,14 @@ '../third_party/libvpx/libvpx.gyp:libvpx_include', '../third_party/zlib/zlib.gyp:zlib', 'chromoting_jingle_glue', - 'base/protocol/chromotocol.gyp:chromotocol_proto_lib', - 'base/protocol/chromotocol.gyp:trace_proto_lib', + 'proto/chromotocol.gyp:chromotocol_proto_lib', + 'proto/trace.gyp:trace_proto_lib', # TODO(hclam): Enable VP8 in the build. #'third_party/on2/on2.gyp:vp8', ], 'export_dependent_settings': [ '../third_party/protobuf/protobuf.gyp:protobuf_lite', - 'base/protocol/chromotocol.gyp:chromotocol_proto_lib', + 'proto/chromotocol.gyp:chromotocol_proto_lib', ], # This target needs a hard dependency because dependent targets # depend on chromotocol_proto_lib for headers. |