Home | History | Annotate | Download | only in common
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // IPC messages for injected Java objects (Gin-based implementation).
      6 
      7 // Multiply-included message file, hence no include guard.
      8 
      9 #include "base/basictypes.h"
     10 #include "content/common/android/gin_java_bridge_errors.h"
     11 #include "content/common/content_export.h"
     12 #include "ipc/ipc_message_macros.h"
     13 
     14 #undef IPC_MESSAGE_EXPORT
     15 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT
     16 #define IPC_MESSAGE_START GinJavaBridgeMsgStart
     17 
     18 // Messages for handling Java objects injected into JavaScript -----------------
     19 
     20 IPC_ENUM_TRAITS(content::GinJavaBridgeError)
     21 
     22 // Sent from browser to renderer to add a Java object with the given name.
     23 // Object IDs are generated on the browser side.
     24 IPC_MESSAGE_ROUTED2(GinJavaBridgeMsg_AddNamedObject,
     25                     std::string /* name */,
     26                     int32 /* object_id */)
     27 
     28 // Sent from browser to renderer to remove a Java object with the given name.
     29 IPC_MESSAGE_ROUTED1(GinJavaBridgeMsg_RemoveNamedObject,
     30                     std::string /* name */)
     31 
     32 // Sent from renderer to browser to get information about methods of
     33 // the given object. The query will only succeed if inspection of injected
     34 // objects is enabled on the browser side.
     35 IPC_SYNC_MESSAGE_ROUTED1_1(GinJavaBridgeHostMsg_GetMethods,
     36                            int32 /* object_id */,
     37                            std::set<std::string> /* returned_method_names */)
     38 
     39 // Sent from renderer to browser to find out, if an object has a method with
     40 // the given name.
     41 IPC_SYNC_MESSAGE_ROUTED2_1(GinJavaBridgeHostMsg_HasMethod,
     42                            int32 /* object_id */,
     43                            std::string /* method_name */,
     44                            bool /* result */)
     45 
     46 // Sent from renderer to browser to invoke a method. Method arguments
     47 // are chained into |arguments| list. base::ListValue is used for |result| as
     48 // a container to work around immutability of base::Value.
     49 // Empty result list indicates that an error has happened on the Java side
     50 // (either bridge-induced error or an unhandled Java exception) and an exception
     51 // must be thrown into JavaScript. |error_code| indicates the cause of
     52 // the error.
     53 // Some special value types that are not supported by base::Value are encoded
     54 // as BinaryValues via GinJavaBridgeValue.
     55 IPC_SYNC_MESSAGE_ROUTED3_2(GinJavaBridgeHostMsg_InvokeMethod,
     56                            int32 /* object_id */,
     57                            std::string /* method_name */,
     58                            base::ListValue /* arguments */,
     59                            base::ListValue /* result */,
     60                            content::GinJavaBridgeError /* error_code */)
     61 
     62 // Sent from renderer to browser in two cases:
     63 //
     64 //  1. (Main usage) To inform that the JS wrapper of the object has
     65 //     been completely dereferenced and garbage-collected.
     66 //
     67 //  2. To notify the browser that wrapper creation has failed.  The browser side
     68 //     assumes optimistically that every time an object is returned from a
     69 //     method, the corresponding wrapper object will be successfully created on
     70 //     the renderer side. Sending of this message informs the browser whether
     71 //     this expectation has failed.
     72 IPC_MESSAGE_ROUTED1(GinJavaBridgeHostMsg_ObjectWrapperDeleted,
     73                     int32 /* object_id */)
     74