summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/app/mash/mash_runner.cc4
-rw-r--r--chrome/browser/chromeos/chrome_interface_factory.h4
-rw-r--r--chrome/browser/usb/web_usb_permission_bubble.h4
-rw-r--r--chrome/browser/usb/web_usb_permission_provider.h4
-rw-r--r--components/font_service/font_service_app.h4
-rw-r--r--components/leveldb/leveldb_app.h4
-rw-r--r--components/leveldb/leveldb_apptest.cc2
-rw-r--r--components/mus/mus_app.h4
-rw-r--r--components/mus/ws/connection_manager.h8
-rw-r--r--components/mus/ws/window_tree_factory.h4
-rw-r--r--components/resource_provider/resource_provider_app.h4
-rw-r--r--content/browser/frame_host/frame_mojo_shell.h6
-rw-r--r--content/browser/vr/vr_device_manager.h4
-rw-r--r--content/gpu/gpu_child_thread.h4
-rw-r--r--content/renderer/mus/render_widget_window_tree_client_factory.cc4
-rw-r--r--content/utility/utility_thread_impl.h4
-rw-r--r--device/usb/mojo/fake_permission_provider.h4
-rw-r--r--mash/screenlock/screenlock.h4
-rw-r--r--mash/shell/shell_application_delegate.h9
-rw-r--r--mash/wm/accelerator_registrar_impl.h2
-rw-r--r--mash/wm/window_manager_application.h4
-rw-r--r--mojo/mojo_public.gyp4
-rw-r--r--mojo/public/cpp/bindings/BUILD.gn4
-rw-r--r--mojo/public/cpp/bindings/binding_set.h113
-rw-r--r--mojo/public/cpp/bindings/interface_ptr_set.h83
-rw-r--r--mojo/public/cpp/bindings/tests/pickle_unittest.cc6
-rw-r--r--mojo/public/cpp/bindings/tests/struct_traits_unittest.cc8
-rw-r--r--mojo/public/cpp/bindings/weak_binding_set.h118
-rw-r--r--mojo/public/cpp/bindings/weak_interface_ptr_set.h88
-rw-r--r--mojo/services/package_manager/package_manager.h8
-rw-r--r--mojo/services/tracing/tracing_app.h8
-rw-r--r--mojo/shell/application_manager.h8
-rw-r--r--mojo/shell/runner/child/native_apptest_target.cc4
-rw-r--r--mojo/shell/tests/application_manager_apptest.cc2
-rw-r--r--mojo/shell/tests/application_manager_apptest_driver.cc4
-rw-r--r--mojo/shell/tests/capability_filter_test.cc8
-rw-r--r--mojo/shell/tests/package_test_package.cc8
37 files changed, 288 insertions, 277 deletions
diff --git a/chrome/app/mash/mash_runner.cc b/chrome/app/mash/mash_runner.cc
index 14a5500..787afc7 100644
--- a/chrome/app/mash/mash_runner.cc
+++ b/chrome/app/mash/mash_runner.cc
@@ -20,7 +20,7 @@
#include "mash/shell/shell_application_delegate.h"
#include "mash/wm/window_manager_application.h"
#include "mojo/common/mojo_scheme_register.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/background/background_shell.h"
#include "mojo/shell/identity.h"
#include "mojo/shell/native_runner_delegate.h"
@@ -105,7 +105,7 @@ class DefaultShellClient : public mojo::ShellClient,
return nullptr;
}
- mojo::BindingSet<ShellClientFactory> shell_client_factory_bindings_;
+ mojo::WeakBindingSet<ShellClientFactory> shell_client_factory_bindings_;
scoped_ptr<mojo::ShellClient> shell_client_;
scoped_ptr<mojo::ShellConnection> shell_connection_;
diff --git a/chrome/browser/chromeos/chrome_interface_factory.h b/chrome/browser/chromeos/chrome_interface_factory.h
index 3a8f8f1..5b2da45 100644
--- a/chrome/browser/chromeos/chrome_interface_factory.h
+++ b/chrome/browser/chromeos/chrome_interface_factory.h
@@ -6,7 +6,7 @@
#define CHROME_BROWSER_CHROMEOS_CHROME_INTERFACE_FACTORY_H_
#include "content/public/common/mojo_shell_connection.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "ui/keyboard/keyboard.mojom.h"
@@ -32,7 +32,7 @@ class ChromeInterfaceFactory
mojo::InterfaceRequest<keyboard::mojom::Keyboard> request) override;
scoped_ptr<KeyboardUIService> keyboard_ui_service_;
- mojo::BindingSet<keyboard::mojom::Keyboard> keyboard_bindings_;
+ mojo::WeakBindingSet<keyboard::mojom::Keyboard> keyboard_bindings_;
DISALLOW_COPY_AND_ASSIGN(ChromeInterfaceFactory);
};
diff --git a/chrome/browser/usb/web_usb_permission_bubble.h b/chrome/browser/usb/web_usb_permission_bubble.h
index d55ffc6..687f2c0 100644
--- a/chrome/browser/usb/web_usb_permission_bubble.h
+++ b/chrome/browser/usb/web_usb_permission_bubble.h
@@ -11,8 +11,8 @@
#include "components/bubble/bubble_reference.h"
#include "components/webusb/public/interfaces/webusb_permission_bubble.mojom.h"
#include "mojo/public/cpp/bindings/array.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
namespace content {
class RenderFrameHost;
@@ -39,7 +39,7 @@ class ChromeWebUsbPermissionBubble : public webusb::WebUsbPermissionBubble {
private:
content::RenderFrameHost* const render_frame_host_;
- mojo::BindingSet<webusb::WebUsbPermissionBubble> bindings_;
+ mojo::WeakBindingSet<webusb::WebUsbPermissionBubble> bindings_;
std::vector<BubbleReference> bubbles_;
DISALLOW_COPY_AND_ASSIGN(ChromeWebUsbPermissionBubble);
diff --git a/chrome/browser/usb/web_usb_permission_provider.h b/chrome/browser/usb/web_usb_permission_provider.h
index 19b6f30..a85d16a 100644
--- a/chrome/browser/usb/web_usb_permission_provider.h
+++ b/chrome/browser/usb/web_usb_permission_provider.h
@@ -9,8 +9,8 @@
#include "device/usb/public/interfaces/permission_provider.mojom.h"
#include "mojo/public/cpp/bindings/array.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
namespace content {
class RenderFrameHost;
@@ -44,7 +44,7 @@ class WebUSBPermissionProvider : public device::usb::PermissionProvider {
mojo::InterfaceRequest<device::usb::PermissionProvider> request) override;
private:
- mojo::BindingSet<PermissionProvider> bindings_;
+ mojo::WeakBindingSet<PermissionProvider> bindings_;
content::RenderFrameHost* const render_frame_host_;
};
diff --git a/components/font_service/font_service_app.h b/components/font_service/font_service_app.h
index 2963720..35fb035 100644
--- a/components/font_service/font_service_app.h
+++ b/components/font_service/font_service_app.h
@@ -10,7 +10,7 @@
#include "base/macros.h"
#include "components/font_service/public/interfaces/font_service.mojom.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/services/tracing/public/cpp/tracing_impl.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "mojo/shell/public/cpp/shell_client.h"
@@ -44,7 +44,7 @@ class FontServiceApp : public mojo::ShellClient,
int FindOrAddPath(const SkString& path);
- mojo::BindingSet<FontService> bindings_;
+ mojo::WeakBindingSet<FontService> bindings_;
mojo::TracingImpl tracing_;
diff --git a/components/leveldb/leveldb_app.h b/components/leveldb/leveldb_app.h
index d1cd684..4de6486 100644
--- a/components/leveldb/leveldb_app.h
+++ b/components/leveldb/leveldb_app.h
@@ -6,7 +6,7 @@
#define COMPONENTS_LEVELDB_LEVELDB_APP_H_
#include "components/leveldb/public/interfaces/leveldb.mojom.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/services/tracing/public/cpp/tracing_impl.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "mojo/shell/public/cpp/shell_client.h"
@@ -36,7 +36,7 @@ class LevelDBApp : public mojo::ShellClient,
mojo::TracingImpl tracing_;
scoped_ptr<LevelDBService> service_;
- mojo::BindingSet<LevelDBService> bindings_;
+ mojo::WeakBindingSet<LevelDBService> bindings_;
DISALLOW_COPY_AND_ASSIGN(LevelDBApp);
};
diff --git a/components/leveldb/leveldb_apptest.cc b/components/leveldb/leveldb_apptest.cc
index 076e9f7..d9e443c 100644
--- a/components/leveldb/leveldb_apptest.cc
+++ b/components/leveldb/leveldb_apptest.cc
@@ -8,7 +8,7 @@
#include "components/filesystem/public/interfaces/types.mojom.h"
#include "components/leveldb/public/interfaces/leveldb.mojom.h"
#include "mojo/common/common_type_converters.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/public/cpp/application_test_base.h"
#include "mojo/shell/public/cpp/shell_connection.h"
#include "mojo/util/capture_util.h"
diff --git a/components/mus/mus_app.h b/components/mus/mus_app.h
index 5a349c5..c058c5f 100644
--- a/components/mus/mus_app.h
+++ b/components/mus/mus_app.h
@@ -18,7 +18,7 @@
#include "components/mus/public/interfaces/window_tree.mojom.h"
#include "components/mus/public/interfaces/window_tree_host.mojom.h"
#include "components/mus/ws/connection_manager_delegate.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/services/tracing/public/cpp/tracing_impl.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "mojo/shell/public/cpp/shell_client.h"
@@ -104,7 +104,7 @@ class MandolineUIServicesApp
void CreateWindowTreeHost(mojo::InterfaceRequest<mojom::WindowTreeHost> host,
mojom::WindowTreeClientPtr tree_client) override;
- mojo::BindingSet<mojom::WindowTreeHostFactory> factory_bindings_;
+ mojo::WeakBindingSet<mojom::WindowTreeHostFactory> factory_bindings_;
mojo::Shell* shell_;
scoped_ptr<ws::ConnectionManager> connection_manager_;
scoped_refptr<GpuState> gpu_state_;
diff --git a/components/mus/ws/connection_manager.h b/components/mus/ws/connection_manager.h
index 94b4afd..7266aa1 100644
--- a/components/mus/ws/connection_manager.h
+++ b/components/mus/ws/connection_manager.h
@@ -27,8 +27,8 @@
#include "mojo/converters/surfaces/custom_surface_converter.h"
#include "mojo/public/cpp/bindings/array.h"
#include "mojo/public/cpp/bindings/binding.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
-#include "mojo/public/cpp/bindings/interface_ptr_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
+#include "mojo/public/cpp/bindings/weak_interface_ptr_set.h"
namespace mus {
namespace ws {
@@ -319,10 +319,10 @@ class ConnectionManager : public ServerWindowDelegate,
// Next id supplied to the window manager.
uint32_t next_wm_change_id_;
- mojo::BindingSet<mojom::DisplayManager> display_manager_bindings_;
+ mojo::WeakBindingSet<mojom::DisplayManager> display_manager_bindings_;
// WARNING: only use these once |got_valid_frame_decorations_| is true.
// TODO(sky): refactor this out into its own class.
- mojo::InterfacePtrSet<mojom::DisplayManagerObserver>
+ mojo::WeakInterfacePtrSet<mojom::DisplayManagerObserver>
display_manager_observers_;
bool got_valid_frame_decorations_;
diff --git a/components/mus/ws/window_tree_factory.h b/components/mus/ws/window_tree_factory.h
index e0569c0..859a810 100644
--- a/components/mus/ws/window_tree_factory.h
+++ b/components/mus/ws/window_tree_factory.h
@@ -7,7 +7,7 @@
#include "base/macros.h"
#include "components/mus/public/interfaces/window_tree.mojom.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
namespace mus {
namespace ws {
@@ -29,7 +29,7 @@ class WindowTreeFactory : public mus::mojom::WindowTreeFactory {
private:
ConnectionManager* connection_manager_;
- mojo::BindingSet<mus::mojom::WindowTreeFactory> binding_;
+ mojo::WeakBindingSet<mus::mojom::WindowTreeFactory> binding_;
DISALLOW_COPY_AND_ASSIGN(WindowTreeFactory);
};
diff --git a/components/resource_provider/resource_provider_app.h b/components/resource_provider/resource_provider_app.h
index 056c97f..4897d0c 100644
--- a/components/resource_provider/resource_provider_app.h
+++ b/components/resource_provider/resource_provider_app.h
@@ -10,7 +10,7 @@
#include "base/macros.h"
#include "components/resource_provider/public/interfaces/resource_provider.mojom.h"
#include "mojo/public/cpp/bindings/binding.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/services/tracing/public/cpp/tracing_impl.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "mojo/shell/public/cpp/shell_client.h"
@@ -39,7 +39,7 @@ class ResourceProviderApp : public mojo::ShellClient,
mojo::TracingImpl tracing_;
- mojo::BindingSet<ResourceProvider> bindings_;
+ mojo::WeakBindingSet<ResourceProvider> bindings_;
// The name of the app that the resource provider code lives in. When using
// core services, it'll be the url of that. Otherwise it'll just be
diff --git a/content/browser/frame_host/frame_mojo_shell.h b/content/browser/frame_host/frame_mojo_shell.h
index bea71dc..fa8f6d8 100644
--- a/content/browser/frame_host/frame_mojo_shell.h
+++ b/content/browser/frame_host/frame_mojo_shell.h
@@ -7,8 +7,8 @@
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/public/interfaces/shell.mojom.h"
namespace content {
@@ -41,11 +41,11 @@ class FrameMojoShell : public mojo::shell::mojom::Shell {
ServiceRegistryImpl* GetServiceRegistry();
RenderFrameHost* frame_host_;
- mojo::BindingSet<mojo::shell::mojom::Shell> bindings_;
+ mojo::WeakBindingSet<mojo::shell::mojom::Shell> bindings_;
// ServiceRegistry providing browser services to connected applications.
scoped_ptr<ServiceRegistryImpl> service_registry_;
- mojo::BindingSet<mojo::shell::mojom::InterfaceProvider>
+ mojo::WeakBindingSet<mojo::shell::mojom::InterfaceProvider>
service_provider_bindings_;
DISALLOW_COPY_AND_ASSIGN(FrameMojoShell);
diff --git a/content/browser/vr/vr_device_manager.h b/content/browser/vr/vr_device_manager.h
index 00a51ec..5fa84e8 100644
--- a/content/browser/vr/vr_device_manager.h
+++ b/content/browser/vr/vr_device_manager.h
@@ -18,7 +18,7 @@
#include "content/browser/vr/vr_device_provider.h"
#include "content/common/content_export.h"
#include "content/common/vr_service.mojom.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
namespace content {
@@ -65,7 +65,7 @@ class VRDeviceManager : public VRService {
bool vr_initialized_;
- mojo::BindingSet<VRService> bindings_;
+ mojo::WeakBindingSet<VRService> bindings_;
// For testing. If true will not delete self when consumer count reaches 0.
bool keep_alive_;
diff --git a/content/gpu/gpu_child_thread.h b/content/gpu/gpu_child_thread.h
index 7cbe0fa..c279c5f 100644
--- a/content/gpu/gpu_child_thread.h
+++ b/content/gpu/gpu_child_thread.h
@@ -24,8 +24,8 @@
#include "content/common/gpu/x_util.h"
#include "content/common/process_control.mojom.h"
#include "gpu/config/gpu_info.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "ui/gfx/native_widget_types.h"
namespace gpu {
@@ -163,7 +163,7 @@ class GpuChildThread : public ChildThreadImpl,
scoped_ptr<GpuProcessControlImpl> process_control_;
// Bindings to the ProcessControl impl.
- mojo::BindingSet<ProcessControl> process_control_bindings_;
+ mojo::WeakBindingSet<ProcessControl> process_control_bindings_;
DISALLOW_COPY_AND_ASSIGN(GpuChildThread);
};
diff --git a/content/renderer/mus/render_widget_window_tree_client_factory.cc b/content/renderer/mus/render_widget_window_tree_client_factory.cc
index 04f5a52..9ff3538 100644
--- a/content/renderer/mus/render_widget_window_tree_client_factory.cc
+++ b/content/renderer/mus/render_widget_window_tree_client_factory.cc
@@ -12,7 +12,7 @@
#include "content/common/render_widget_window_tree_client_factory.mojom.h"
#include "content/public/common/mojo_shell_connection.h"
#include "content/renderer/mus/render_widget_mus_connection.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/public/cpp/connection.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "url/gurl.h"
@@ -58,7 +58,7 @@ class RenderWidgetWindowTreeClientFactoryImpl
connection->Bind(std::move(request));
}
- mojo::BindingSet<mojom::RenderWidgetWindowTreeClientFactory> bindings_;
+ mojo::WeakBindingSet<mojom::RenderWidgetWindowTreeClientFactory> bindings_;
DISALLOW_COPY_AND_ASSIGN(RenderWidgetWindowTreeClientFactoryImpl);
};
diff --git a/content/utility/utility_thread_impl.h b/content/utility/utility_thread_impl.h
index 63cf38f..fef34a6 100644
--- a/content/utility/utility_thread_impl.h
+++ b/content/utility/utility_thread_impl.h
@@ -16,7 +16,7 @@
#include "content/common/content_export.h"
#include "content/common/process_control.mojom.h"
#include "content/public/utility/utility_thread.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
namespace base {
class FilePath;
@@ -72,7 +72,7 @@ class UtilityThreadImpl : public UtilityThread,
scoped_ptr<UtilityProcessControlImpl> process_control_;
// Bindings to the ProcessControl impl.
- mojo::BindingSet<ProcessControl> process_control_bindings_;
+ mojo::WeakBindingSet<ProcessControl> process_control_bindings_;
DISALLOW_COPY_AND_ASSIGN(UtilityThreadImpl);
};
diff --git a/device/usb/mojo/fake_permission_provider.h b/device/usb/mojo/fake_permission_provider.h
index 5ca1610..a1da1b0 100644
--- a/device/usb/mojo/fake_permission_provider.h
+++ b/device/usb/mojo/fake_permission_provider.h
@@ -9,8 +9,8 @@
#include "device/usb/public/interfaces/permission_provider.mojom.h"
#include "mojo/public/cpp/bindings/array.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
namespace device {
namespace usb {
@@ -35,7 +35,7 @@ class FakePermissionProvider : public PermissionProvider {
void Bind(mojo::InterfaceRequest<PermissionProvider> request) override;
private:
- mojo::BindingSet<PermissionProvider> bindings_;
+ mojo::WeakBindingSet<PermissionProvider> bindings_;
};
} // namespace usb
diff --git a/mash/screenlock/screenlock.h b/mash/screenlock/screenlock.h
index e05a46c..07f9de5 100644
--- a/mash/screenlock/screenlock.h
+++ b/mash/screenlock/screenlock.h
@@ -10,7 +10,7 @@
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "mash/shell/public/interfaces/shell.mojom.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/services/tracing/public/cpp/tracing_impl.h"
#include "mojo/shell/public/cpp/shell_client.h"
@@ -38,7 +38,7 @@ class Screenlock : public mojo::ShellClient,
mojo::Shell* shell_;
mojo::TracingImpl tracing_;
scoped_ptr<views::AuraInit> aura_init_;
- mojo::BindingSet<mash::shell::mojom::ScreenlockStateListener> bindings_;
+ mojo::WeakBindingSet<mash::shell::mojom::ScreenlockStateListener> bindings_;
DISALLOW_COPY_AND_ASSIGN(Screenlock);
};
diff --git a/mash/shell/shell_application_delegate.h b/mash/shell/shell_application_delegate.h
index 524a554..60a1d69 100644
--- a/mash/shell/shell_application_delegate.h
+++ b/mash/shell/shell_application_delegate.h
@@ -11,8 +11,8 @@
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "mash/shell/public/interfaces/shell.mojom.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
-#include "mojo/public/cpp/bindings/interface_ptr_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
+#include "mojo/public/cpp/bindings/weak_interface_ptr_set.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "mojo/shell/public/cpp/shell_client.h"
@@ -63,8 +63,9 @@ class ShellApplicationDelegate
mojo::Shell* shell_;
std::map<std::string, scoped_ptr<mojo::Connection>> connections_;
bool screen_locked_;
- mojo::BindingSet<mash::shell::mojom::Shell> bindings_;
- mojo::InterfacePtrSet<mojom::ScreenlockStateListener> screenlock_listeners_;
+ mojo::WeakBindingSet<mash::shell::mojom::Shell> bindings_;
+ mojo::WeakInterfacePtrSet<mojom::ScreenlockStateListener>
+ screenlock_listeners_;
DISALLOW_COPY_AND_ASSIGN(ShellApplicationDelegate);
};
diff --git a/mash/wm/accelerator_registrar_impl.h b/mash/wm/accelerator_registrar_impl.h
index 3bde90f..fe470c6 100644
--- a/mash/wm/accelerator_registrar_impl.h
+++ b/mash/wm/accelerator_registrar_impl.h
@@ -13,8 +13,8 @@
#include "base/macros.h"
#include "components/mus/public/interfaces/accelerator_registrar.mojom.h"
#include "mash/wm/root_windows_observer.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
namespace mash {
namespace wm {
diff --git a/mash/wm/window_manager_application.h b/mash/wm/window_manager_application.h
index 7f2806f..7699b9f 100644
--- a/mash/wm/window_manager_application.h
+++ b/mash/wm/window_manager_application.h
@@ -19,7 +19,7 @@
#include "components/mus/public/interfaces/window_tree_host.mojom.h"
#include "mash/wm/public/interfaces/user_window_controller.mojom.h"
#include "mojo/public/cpp/bindings/binding.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/services/tracing/public/cpp/tracing_impl.h"
#include "mojo/shell/public/cpp/shell_client.h"
@@ -107,7 +107,7 @@ class WindowManagerApplication
// |user_window_controller_| is created once OnEmbed() is called. Until that
// time |user_window_controller_requests_| stores pending interface requests.
scoped_ptr<UserWindowControllerImpl> user_window_controller_;
- mojo::BindingSet<mash::wm::mojom::UserWindowController>
+ mojo::WeakBindingSet<mash::wm::mojom::UserWindowController>
user_window_controller_binding_;
std::vector<
scoped_ptr<mojo::InterfaceRequest<mash::wm::mojom::UserWindowController>>>
diff --git a/mojo/mojo_public.gyp b/mojo/mojo_public.gyp
index 10a0dae..3017df8 100644
--- a/mojo/mojo_public.gyp
+++ b/mojo/mojo_public.gyp
@@ -104,10 +104,8 @@
'public/cpp/bindings/associated_interface_ptr_info.h',
'public/cpp/bindings/associated_interface_request.h',
'public/cpp/bindings/binding.h',
- 'public/cpp/bindings/binding_set.h',
'public/cpp/bindings/callback.h',
'public/cpp/bindings/interface_ptr.h',
- 'public/cpp/bindings/interface_ptr_set.h',
'public/cpp/bindings/interface_request.h',
'public/cpp/bindings/lib/array_internal.cc',
'public/cpp/bindings/lib/array_internal.h',
@@ -179,6 +177,8 @@
'public/cpp/bindings/string.h',
'public/cpp/bindings/strong_binding.h',
'public/cpp/bindings/type_converter.h',
+ 'public/cpp/bindings/weak_binding_set.h',
+ 'public/cpp/bindings/weak_interface_ptr_set.h',
# This comes from the mojo_interface_bindings_cpp_sources dependency.
'>@(mojom_generated_sources)',
],
diff --git a/mojo/public/cpp/bindings/BUILD.gn b/mojo/public/cpp/bindings/BUILD.gn
index 6b7a015..72079fd 100644
--- a/mojo/public/cpp/bindings/BUILD.gn
+++ b/mojo/public/cpp/bindings/BUILD.gn
@@ -11,10 +11,8 @@ source_set("bindings") {
"associated_interface_ptr_info.h",
"associated_interface_request.h",
"binding.h",
- "binding_set.h",
"interface_ptr.h",
"interface_ptr_info.h",
- "interface_ptr_set.h",
"interface_request.h",
"lib/array_internal.cc",
"lib/array_internal.h",
@@ -87,6 +85,8 @@ source_set("bindings") {
"struct_ptr.h",
"struct_traits.h",
"type_converter.h",
+ "weak_binding_set.h",
+ "weak_interface_ptr_set.h",
]
public_deps = [
diff --git a/mojo/public/cpp/bindings/binding_set.h b/mojo/public/cpp/bindings/binding_set.h
deleted file mode 100644
index 82e7cfb..0000000
--- a/mojo/public/cpp/bindings/binding_set.h
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright 2014 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_PUBLIC_CPP_BINDINGS_BINDING_SET_H_
-#define MOJO_PUBLIC_CPP_BINDINGS_BINDING_SET_H_
-
-#include <algorithm>
-#include <utility>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "mojo/public/cpp/bindings/binding.h"
-
-namespace mojo {
-
-// Use this class to manage a set of bindings, which are automatically destroyed
-// and removed from the set when the pipe they bound to is disconnected.
-template <typename Interface>
-class BindingSet {
- public:
- using GenericInterface = typename Interface::GenericInterface;
-
- BindingSet() {}
- ~BindingSet() { CloseAllBindings(); }
-
- void set_connection_error_handler(const Closure& error_handler) {
- error_handler_ = error_handler;
- }
-
- void AddBinding(Interface* impl, InterfaceRequest<GenericInterface> request) {
- auto binding = new Element(impl, std::move(request));
- binding->set_connection_error_handler([this]() { OnConnectionError(); });
- bindings_.push_back(binding->GetWeakPtr());
- }
-
- // Returns an InterfacePtr bound to one end of a pipe whose other end is
- // bound to |this|.
- InterfacePtr<Interface> CreateInterfacePtrAndBind(Interface* impl) {
- InterfacePtr<Interface> interface_ptr;
- AddBinding(impl, GetProxy(&interface_ptr));
- return interface_ptr;
- }
-
- void CloseAllBindings() {
- for (const auto& it : bindings_) {
- if (it) {
- it->Close();
- delete it.get();
- }
- }
- bindings_.clear();
- }
-
- bool empty() const { return bindings_.empty(); }
-
- private:
- class Element {
- public:
- using GenericInterface = typename Interface::GenericInterface;
-
- Element(Interface* impl, InterfaceRequest<GenericInterface> request)
- : binding_(impl, std::move(request)), weak_ptr_factory_(this) {
- binding_.set_connection_error_handler([this]() { OnConnectionError(); });
- }
-
- ~Element() {}
-
- void set_connection_error_handler(const Closure& error_handler) {
- error_handler_ = error_handler;
- }
-
- base::WeakPtr<Element> GetWeakPtr() {
- return weak_ptr_factory_.GetWeakPtr();
- }
-
- void Close() { binding_.Close(); }
-
- void OnConnectionError() {
- Closure error_handler = error_handler_;
- delete this;
- error_handler.Run();
- }
-
- private:
- Binding<Interface> binding_;
- Closure error_handler_;
- base::WeakPtrFactory<Element> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(Element);
- };
-
- void OnConnectionError() {
- // Clear any deleted bindings.
- bindings_.erase(std::remove_if(bindings_.begin(), bindings_.end(),
- [](const base::WeakPtr<Element>& p) {
- return p.get() == nullptr;
- }),
- bindings_.end());
-
- error_handler_.Run();
- }
-
- Closure error_handler_;
- std::vector<base::WeakPtr<Element>> bindings_;
-
- DISALLOW_COPY_AND_ASSIGN(BindingSet);
-};
-
-} // namespace mojo
-
-#endif // MOJO_PUBLIC_CPP_BINDINGS_BINDING_SET_H_
diff --git a/mojo/public/cpp/bindings/interface_ptr_set.h b/mojo/public/cpp/bindings/interface_ptr_set.h
deleted file mode 100644
index c5d402d..0000000
--- a/mojo/public/cpp/bindings/interface_ptr_set.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2014 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_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_SET_H_
-#define MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_SET_H_
-
-#include <utility>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "mojo/public/cpp/bindings/interface_ptr.h"
-
-namespace mojo {
-
-template <typename Interface>
-class InterfacePtrSet {
- public:
- InterfacePtrSet() {}
- ~InterfacePtrSet() { CloseAll(); }
-
- void AddInterfacePtr(InterfacePtr<Interface> ptr) {
- auto weak_interface_ptr = new Element(std::move(ptr));
- ptrs_.push_back(weak_interface_ptr->GetWeakPtr());
- ClearNullInterfacePtrs();
- }
-
- template <typename FunctionType>
- void ForAllPtrs(FunctionType function) {
- for (const auto& it : ptrs_) {
- if (it)
- function(it->get());
- }
- ClearNullInterfacePtrs();
- }
-
- void CloseAll() {
- for (const auto& it : ptrs_) {
- if (it)
- it->Close();
- }
- ptrs_.clear();
- }
-
- private:
- class Element {
- public:
- explicit Element(InterfacePtr<Interface> ptr)
- : ptr_(std::move(ptr)), weak_ptr_factory_(this) {
- ptr_.set_connection_error_handler([this]() { delete this; });
- }
- ~Element() {}
-
- void Close() { ptr_.reset(); }
-
- Interface* get() { return ptr_.get(); }
-
- base::WeakPtr<Element> GetWeakPtr() {
- return weak_ptr_factory_.GetWeakPtr();
- }
-
- private:
- InterfacePtr<Interface> ptr_;
- base::WeakPtrFactory<Element> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(Element);
- };
-
- void ClearNullInterfacePtrs() {
- ptrs_.erase(std::remove_if(ptrs_.begin(), ptrs_.end(),
- [](const base::WeakPtr<Element>& p) {
- return p.get() == nullptr;
- }),
- ptrs_.end());
- }
-
- std::vector<base::WeakPtr<Element>> ptrs_;
-};
-
-} // namespace mojo
-
-#endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_SET_H_
diff --git a/mojo/public/cpp/bindings/tests/pickle_unittest.cc b/mojo/public/cpp/bindings/tests/pickle_unittest.cc
index 33961b4..a0d7a2e 100644
--- a/mojo/public/cpp/bindings/tests/pickle_unittest.cc
+++ b/mojo/public/cpp/bindings/tests/pickle_unittest.cc
@@ -9,10 +9,10 @@
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/tests/pickled_struct_blink.h"
#include "mojo/public/cpp/bindings/tests/pickled_struct_chromium.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/public/interfaces/bindings/tests/test_native_types.mojom-blink.h"
#include "mojo/public/interfaces/bindings/tests/test_native_types.mojom-chromium.h"
#include "mojo/public/interfaces/bindings/tests/test_native_types.mojom.h"
@@ -134,9 +134,9 @@ class PickleTest : public testing::Test {
private:
base::MessageLoop loop_;
ChromiumPicklePasserImpl chromium_service_;
- mojo::BindingSet<chromium::PicklePasser> chromium_bindings_;
+ mojo::WeakBindingSet<chromium::PicklePasser> chromium_bindings_;
BlinkPicklePasserImpl blink_service_;
- mojo::BindingSet<blink::PicklePasser> blink_bindings_;
+ mojo::WeakBindingSet<blink::PicklePasser> blink_bindings_;
};
} // namespace
diff --git a/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc b/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc
index b4c3e49..02fb53f 100644
--- a/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc
+++ b/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc
@@ -7,11 +7,11 @@
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/tests/rect_blink.h"
#include "mojo/public/cpp/bindings/tests/rect_chromium.h"
#include "mojo/public/cpp/bindings/tests/struct_with_traits_impl.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/public/interfaces/bindings/tests/struct_with_traits.mojom.h"
#include "mojo/public/interfaces/bindings/tests/test_native_types.mojom-blink.h"
#include "mojo/public/interfaces/bindings/tests/test_native_types.mojom-chromium.h"
@@ -126,12 +126,12 @@ class StructTraitsTest : public testing::Test,
base::MessageLoop loop_;
ChromiumRectServiceImpl chromium_service_;
- mojo::BindingSet<chromium::RectService> chromium_bindings_;
+ mojo::WeakBindingSet<chromium::RectService> chromium_bindings_;
BlinkRectServiceImpl blink_service_;
- mojo::BindingSet<blink::RectService> blink_bindings_;
+ mojo::WeakBindingSet<blink::RectService> blink_bindings_;
- mojo::BindingSet<TraitsTestService> traits_test_bindings_;
+ mojo::WeakBindingSet<TraitsTestService> traits_test_bindings_;
};
} // namespace
diff --git a/mojo/public/cpp/bindings/weak_binding_set.h b/mojo/public/cpp/bindings/weak_binding_set.h
new file mode 100644
index 0000000..bf06a28
--- /dev/null
+++ b/mojo/public/cpp/bindings/weak_binding_set.h
@@ -0,0 +1,118 @@
+// Copyright 2014 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_PUBLIC_CPP_BINDINGS_WEAK_BINDING_SET_H_
+#define MOJO_PUBLIC_CPP_BINDINGS_WEAK_BINDING_SET_H_
+
+#include <algorithm>
+#include <utility>
+#include <vector>
+
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "mojo/public/cpp/bindings/binding.h"
+
+namespace mojo {
+
+template <typename Interface>
+class WeakBinding;
+
+// Use this class to manage a set of weak pointers to bindings each of which is
+// owned by the pipe they are bound to.
+template <typename Interface>
+class WeakBindingSet {
+ public:
+ using GenericInterface = typename Interface::GenericInterface;
+
+ WeakBindingSet() {}
+ ~WeakBindingSet() { CloseAllBindings(); }
+
+ void set_connection_error_handler(const Closure& error_handler) {
+ error_handler_ = error_handler;
+ }
+
+ void AddBinding(Interface* impl, InterfaceRequest<GenericInterface> request) {
+ auto binding = new WeakBinding<Interface>(impl, std::move(request));
+ binding->set_connection_error_handler([this]() { OnConnectionError(); });
+ bindings_.push_back(binding->GetWeakPtr());
+ }
+
+ // Returns an InterfacePtr bound to one end of a pipe whose other end is
+ // bound to |this|.
+ InterfacePtr<Interface> CreateInterfacePtrAndBind(Interface* impl) {
+ InterfacePtr<Interface> interface_ptr;
+ AddBinding(impl, GetProxy(&interface_ptr));
+ return interface_ptr;
+ }
+
+ void CloseAllBindings() {
+ for (const auto& it : bindings_) {
+ if (it) {
+ it->Close();
+ delete it.get();
+ }
+ }
+ bindings_.clear();
+ }
+
+ bool empty() const { return bindings_.empty(); }
+
+ private:
+ void OnConnectionError() {
+ // Clear any deleted bindings.
+ bindings_.erase(
+ std::remove_if(bindings_.begin(), bindings_.end(),
+ [](const base::WeakPtr<WeakBinding<Interface>>& p) {
+ return p.get() == nullptr;
+ }),
+ bindings_.end());
+
+ error_handler_.Run();
+ }
+
+ Closure error_handler_;
+ std::vector<base::WeakPtr<WeakBinding<Interface>>> bindings_;
+
+ DISALLOW_COPY_AND_ASSIGN(WeakBindingSet);
+};
+
+template <typename Interface>
+class WeakBinding {
+ public:
+ using GenericInterface = typename Interface::GenericInterface;
+
+ WeakBinding(Interface* impl, InterfaceRequest<GenericInterface> request)
+ : binding_(impl, std::move(request)), weak_ptr_factory_(this) {
+ binding_.set_connection_error_handler([this]() { OnConnectionError(); });
+ }
+
+ ~WeakBinding() {}
+
+ void set_connection_error_handler(const Closure& error_handler) {
+ error_handler_ = error_handler;
+ }
+
+ base::WeakPtr<WeakBinding> GetWeakPtr() {
+ return weak_ptr_factory_.GetWeakPtr();
+ }
+
+ void Close() { binding_.Close(); }
+
+ void OnConnectionError() {
+ Closure error_handler = error_handler_;
+ delete this;
+ error_handler.Run();
+ }
+
+ private:
+ Binding<Interface> binding_;
+ Closure error_handler_;
+ base::WeakPtrFactory<WeakBinding> weak_ptr_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(WeakBinding);
+};
+
+} // namespace mojo
+
+#endif // MOJO_PUBLIC_CPP_BINDINGS_WEAK_BINDING_SET_H_
diff --git a/mojo/public/cpp/bindings/weak_interface_ptr_set.h b/mojo/public/cpp/bindings/weak_interface_ptr_set.h
new file mode 100644
index 0000000..f92a5ed
--- /dev/null
+++ b/mojo/public/cpp/bindings/weak_interface_ptr_set.h
@@ -0,0 +1,88 @@
+// Copyright 2014 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_PUBLIC_CPP_BINDINGS_WEAK_INTERFACE_PTR_SET_H_
+#define MOJO_PUBLIC_CPP_BINDINGS_WEAK_INTERFACE_PTR_SET_H_
+
+#include <utility>
+#include <vector>
+
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "mojo/public/cpp/bindings/interface_ptr.h"
+
+namespace mojo {
+
+template <typename Interface>
+class WeakInterfacePtr;
+
+template <typename Interface>
+class WeakInterfacePtrSet {
+ public:
+ WeakInterfacePtrSet() {}
+ ~WeakInterfacePtrSet() { CloseAll(); }
+
+ void AddInterfacePtr(InterfacePtr<Interface> ptr) {
+ auto weak_interface_ptr = new WeakInterfacePtr<Interface>(std::move(ptr));
+ ptrs_.push_back(weak_interface_ptr->GetWeakPtr());
+ ClearNullInterfacePtrs();
+ }
+
+ template <typename FunctionType>
+ void ForAllPtrs(FunctionType function) {
+ for (const auto& it : ptrs_) {
+ if (it)
+ function(it->get());
+ }
+ ClearNullInterfacePtrs();
+ }
+
+ void CloseAll() {
+ for (const auto& it : ptrs_) {
+ if (it)
+ it->Close();
+ }
+ ptrs_.clear();
+ }
+
+ private:
+ using WPWIPI = base::WeakPtr<WeakInterfacePtr<Interface>>;
+
+ void ClearNullInterfacePtrs() {
+ ptrs_.erase(
+ std::remove_if(ptrs_.begin(), ptrs_.end(),
+ [](const WPWIPI& p) { return p.get() == nullptr; }),
+ ptrs_.end());
+ }
+
+ std::vector<WPWIPI> ptrs_;
+};
+
+template <typename Interface>
+class WeakInterfacePtr {
+ public:
+ explicit WeakInterfacePtr(InterfacePtr<Interface> ptr)
+ : ptr_(std::move(ptr)), weak_ptr_factory_(this) {
+ ptr_.set_connection_error_handler([this]() { delete this; });
+ }
+ ~WeakInterfacePtr() {}
+
+ void Close() { ptr_.reset(); }
+
+ Interface* get() { return ptr_.get(); }
+
+ base::WeakPtr<WeakInterfacePtr> GetWeakPtr() {
+ return weak_ptr_factory_.GetWeakPtr();
+ }
+
+ private:
+ InterfacePtr<Interface> ptr_;
+ base::WeakPtrFactory<WeakInterfacePtr> weak_ptr_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(WeakInterfacePtr);
+};
+
+} // namespace mojo
+
+#endif // MOJO_PUBLIC_CPP_BINDINGS_WEAK_INTERFACE_PTR_SET_H_
diff --git a/mojo/services/package_manager/package_manager.h b/mojo/services/package_manager/package_manager.h
index 2c4c2c88..a1089f0 100644
--- a/mojo/services/package_manager/package_manager.h
+++ b/mojo/services/package_manager/package_manager.h
@@ -9,7 +9,7 @@
#include "base/memory/weak_ptr.h"
#include "base/path_service.h"
#include "base/values.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/services/package_manager/public/interfaces/catalog.mojom.h"
#include "mojo/services/package_manager/public/interfaces/resolver.mojom.h"
#include "mojo/services/package_manager/public/interfaces/shell_resolver.mojom.h"
@@ -146,9 +146,9 @@ class PackageManager : public mojo::ShellClient,
base::TaskRunner* blocking_pool_;
GURL system_package_dir_;
- mojo::BindingSet<mojom::Resolver> resolver_bindings_;
- mojo::BindingSet<mojom::ShellResolver> shell_resolver_bindings_;
- mojo::BindingSet<mojom::Catalog> catalog_bindings_;
+ mojo::WeakBindingSet<mojom::Resolver> resolver_bindings_;
+ mojo::WeakBindingSet<mojom::ShellResolver> shell_resolver_bindings_;
+ mojo::WeakBindingSet<mojom::Catalog> catalog_bindings_;
ApplicationCatalogStore* catalog_store_;
std::map<std::string, ApplicationInfo> catalog_;
diff --git a/mojo/services/tracing/tracing_app.h b/mojo/services/tracing/tracing_app.h
index f409887..edb189e 100644
--- a/mojo/services/tracing/tracing_app.h
+++ b/mojo/services/tracing/tracing_app.h
@@ -10,9 +10,9 @@
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
-#include "mojo/public/cpp/bindings/interface_ptr_set.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
+#include "mojo/public/cpp/bindings/weak_interface_ptr_set.h"
#include "mojo/services/tracing/public/interfaces/tracing.mojom.h"
#include "mojo/services/tracing/trace_data_sink.h"
#include "mojo/services/tracing/trace_recorder_impl.h"
@@ -64,9 +64,9 @@ class TracingApp
scoped_ptr<TraceDataSink> sink_;
ScopedVector<TraceRecorderImpl> recorder_impls_;
- mojo::InterfacePtrSet<TraceProvider> provider_ptrs_;
+ mojo::WeakInterfacePtrSet<TraceProvider> provider_ptrs_;
mojo::Binding<TraceCollector> collector_binding_;
- mojo::BindingSet<StartupPerformanceDataCollector>
+ mojo::WeakBindingSet<StartupPerformanceDataCollector>
startup_performance_data_collector_bindings_;
StartupPerformanceTimes startup_performance_times_;
bool tracing_active_;
diff --git a/mojo/shell/application_manager.h b/mojo/shell/application_manager.h
index 16e9ab4..b6e657c 100644
--- a/mojo/shell/application_manager.h
+++ b/mojo/shell/application_manager.h
@@ -11,8 +11,8 @@
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
-#include "mojo/public/cpp/bindings/interface_ptr_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
+#include "mojo/public/cpp/bindings/weak_interface_ptr_set.h"
#include "mojo/services/package_manager/public/interfaces/shell_resolver.mojom.h"
#include "mojo/shell/application_loader.h"
#include "mojo/shell/capability_filter.h"
@@ -181,14 +181,14 @@ class ApplicationManager : public ShellClient,
// Counter used to assign ids to content handlers.
uint32_t shell_client_factory_id_counter_;
- InterfacePtrSet<mojom::ApplicationManagerListener> listeners_;
+ WeakInterfacePtrSet<mojom::ApplicationManagerListener> listeners_;
base::Callback<void(const Identity&)> instance_quit_callback_;
base::TaskRunner* file_task_runner_;
scoped_ptr<NativeRunnerFactory> native_runner_factory_;
std::vector<scoped_ptr<NativeRunner>> native_runners_;
scoped_ptr<ShellConnection> shell_connection_;
- BindingSet<mojom::ApplicationManager> bindings_;
+ WeakBindingSet<mojom::ApplicationManager> bindings_;
base::WeakPtrFactory<ApplicationManager> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(ApplicationManager);
diff --git a/mojo/shell/runner/child/native_apptest_target.cc b/mojo/shell/runner/child/native_apptest_target.cc
index 04ebdbb..d2747c5 100644
--- a/mojo/shell/runner/child/native_apptest_target.cc
+++ b/mojo/shell/runner/child/native_apptest_target.cc
@@ -7,7 +7,7 @@
#include "base/at_exit.h"
#include "base/command_line.h"
#include "base/macros.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/public/cpp/connection.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "mojo/shell/public/cpp/shell.h"
@@ -47,7 +47,7 @@ class TargetApplicationDelegate
bindings_.AddBinding(this, std::move(request));
}
- mojo::BindingSet<mojo::shell::test::TestNativeService> bindings_;
+ mojo::WeakBindingSet<mojo::shell::test::TestNativeService> bindings_;
DISALLOW_COPY_AND_ASSIGN(TargetApplicationDelegate);
};
diff --git a/mojo/shell/tests/application_manager_apptest.cc b/mojo/shell/tests/application_manager_apptest.cc
index 9af94a1..367b8fa 100644
--- a/mojo/shell/tests/application_manager_apptest.cc
+++ b/mojo/shell/tests/application_manager_apptest.cc
@@ -11,7 +11,7 @@
#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "base/process/process_handle.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/public/cpp/application_test_base.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "mojo/shell/public/cpp/shell.h"
diff --git a/mojo/shell/tests/application_manager_apptest_driver.cc b/mojo/shell/tests/application_manager_apptest_driver.cc
index 2a820fe..aad9660 100644
--- a/mojo/shell/tests/application_manager_apptest_driver.cc
+++ b/mojo/shell/tests/application_manager_apptest_driver.cc
@@ -21,7 +21,7 @@
#include "mojo/edk/embedder/embedder.h"
#include "mojo/edk/embedder/platform_channel_pair.h"
#include "mojo/edk/embedder/scoped_platform_handle.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/public/cpp/connection.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "mojo/shell/public/cpp/shell.h"
@@ -136,7 +136,7 @@ class TargetApplicationDelegate : public mojo::ShellClient,
mojo::Shell* shell_;
base::Process target_;
- mojo::BindingSet<Driver> bindings_;
+ mojo::WeakBindingSet<Driver> bindings_;
base::WeakPtrFactory<TargetApplicationDelegate> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(TargetApplicationDelegate);
diff --git a/mojo/shell/tests/capability_filter_test.cc b/mojo/shell/tests/capability_filter_test.cc
index 6538ddc..b9240d6 100644
--- a/mojo/shell/tests/capability_filter_test.cc
+++ b/mojo/shell/tests/capability_filter_test.cc
@@ -9,8 +9,8 @@
#include "base/macros.h"
#include "base/stl_util.h"
#include "base/strings/stringprintf.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/application_loader.h"
#include "mojo/shell/public/cpp/connection.h"
#include "mojo/shell/public/cpp/interface_factory.h"
@@ -97,7 +97,7 @@ class ConnectionValidator : public ApplicationLoader,
std::set<std::string> expectations_;
std::set<std::string> unexpected_;
base::MessageLoop* loop_;
- BindingSet<Validator> validator_bindings_;
+ WeakBindingSet<Validator> validator_bindings_;
DISALLOW_COPY_AND_ASSIGN(ConnectionValidator);
};
@@ -150,8 +150,8 @@ class ServiceApplication : public ShellClient,
Shell* shell_;
ValidatorPtr validator_;
- BindingSet<Safe> safe_bindings_;
- BindingSet<Unsafe> unsafe_bindings_;
+ WeakBindingSet<Safe> safe_bindings_;
+ WeakBindingSet<Unsafe> unsafe_bindings_;
DISALLOW_COPY_AND_ASSIGN(ServiceApplication);
};
diff --git a/mojo/shell/tests/package_test_package.cc b/mojo/shell/tests/package_test_package.cc
index ee8ff5b..a9defe4 100644
--- a/mojo/shell/tests/package_test_package.cc
+++ b/mojo/shell/tests/package_test_package.cc
@@ -12,7 +12,7 @@
#include "base/run_loop.h"
#include "base/threading/simple_thread.h"
#include "mojo/public/c/system/main.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/weak_binding_set.h"
#include "mojo/shell/public/cpp/application_runner.h"
#include "mojo/shell/public/cpp/interface_factory.h"
#include "mojo/shell/public/cpp/shell.h"
@@ -88,7 +88,7 @@ class ProvidedShellClient
const std::string name_;
mojom::ShellClientRequest request_;
Shell* shell_;
- BindingSet<test::mojom::PackageTestService> bindings_;
+ WeakBindingSet<test::mojom::PackageTestService> bindings_;
DISALLOW_COPY_AND_ASSIGN(ProvidedShellClient);
};
@@ -151,8 +151,8 @@ class PackageTestShellClient
Shell* shell_;
std::vector<scoped_ptr<ShellClient>> delegates_;
- BindingSet<mojom::ShellClientFactory> shell_client_factory_bindings_;
- BindingSet<test::mojom::PackageTestService> bindings_;
+ WeakBindingSet<mojom::ShellClientFactory> shell_client_factory_bindings_;
+ WeakBindingSet<test::mojom::PackageTestService> bindings_;
DISALLOW_COPY_AND_ASSIGN(PackageTestShellClient);
};