diff options
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); }; |