Mojo: Replace RemotePtr with InterfacePtr and InterfaceImpl

Interfaces no longer have explicit Peer attributes. An interface may now optionally have a Client interface, in which case a SetClient method will be auto-generated.

InterfacePtr is a proxy to a remote instance of an interface. InterfaceImpl is a base class used when implementing an interface. Both have facilities for binding to a pipe, etc. An InterfacePtr is movable but not copyable and looks a lot like RemotePtr save for how it gets initialized (via the Bind method now).

I've added some new top-level functions:

MakeProxy - makes it easy to initialize an InterfacePtr in say a member initializer list.

BindToPipe - this is how you bind an InterfaceImpl to a pipe. once bound, they cannot be unbound until the object is destroyed or the pipe is closed.

BindToProxy - builds on top of BindToPipe, however, it hides the details of the pipe. What you get back is an InterfacePtr.

Generated C++ code now passes InterfacePtr instead of InterfaceHandle. As a result, we have far less need for typed subclasses of MessagePipeHandle, so I eliminated them. The code that needs to deal with raw handles generally has to deal with {Scoped}MessagePipeHandle, and adding strong typing to these handles doesn't seem helpful anymore.

[email protected]

Review URL: https://codereview.chromium.org/265793015

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@269443 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/mojo/mojo.gyp b/mojo/mojo.gyp
index 8eea547..491d8abd 100644
--- a/mojo/mojo.gyp
+++ b/mojo/mojo.gyp
@@ -75,6 +75,12 @@
             'mojo_test_apk',
           ],
         }],
+        ['OS == "linux"', {
+          'dependencies': [
+            'mojo_dbus_echo',
+            'mojo_dbus_echo_service',
+          ],
+        }],
       ]
     },
     {
@@ -521,6 +527,7 @@
             'mojo_gles2',
             'mojo_shell_client',
             'mojo_view_manager',
+            'mojo_view_manager_bindings',
           ],
         }, {  # use_aura==0
           'sources!': [