Commit c69f26f4 authored by Bailey Berro's avatar Bailey Berro Committed by Commit Bot

Use SupportsWeakPtr<SmbProviderClient>

This change switches SmbProviderClient to using base::SupportsWeakPtr
and SmbProviderClientImpl to using a helper class that wraps it
instead of a manually implemented WeakPtrFactory.

Bug: chromium:757625
Change-Id: I18f3b04c18ba28bdf8bf9c356b3ebeb98d546cd3
Reviewed-on: https://chromium-review.googlesource.com/956417
Commit-Queue: Bailey Berro <baileyberro@chromium.org>
Reviewed-by: default avatarZentaro Kavanagh <zentaro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542951}
parent 1f31a184
...@@ -58,7 +58,7 @@ bool ParseDeleteList(const base::ScopedFD& fd, ...@@ -58,7 +58,7 @@ bool ParseDeleteList(const base::ScopedFD& fd,
class SmbProviderClientImpl : public SmbProviderClient { class SmbProviderClientImpl : public SmbProviderClient {
public: public:
SmbProviderClientImpl() : weak_ptr_factory_(this) {} SmbProviderClientImpl() = default;
~SmbProviderClientImpl() override {} ~SmbProviderClientImpl() override {}
...@@ -260,9 +260,9 @@ class SmbProviderClientImpl : public SmbProviderClient { ...@@ -260,9 +260,9 @@ class SmbProviderClientImpl : public SmbProviderClient {
void CallMethod(dbus::MethodCall* method_call, void CallMethod(dbus::MethodCall* method_call,
CallbackHandler handler, CallbackHandler handler,
Callback callback) { Callback callback) {
proxy_->CallMethod(method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, proxy_->CallMethod(
base::BindOnce(handler, weak_ptr_factory_.GetWeakPtr(), method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::Passed(callback))); base::BindOnce(handler, GetWeakPtr(), base::Passed(callback)));
} }
// Calls the D-Bus method |name|, passing the |protobuf| as an argument. // Calls the D-Bus method |name|, passing the |protobuf| as an argument.
...@@ -284,7 +284,7 @@ class SmbProviderClientImpl : public SmbProviderClient { ...@@ -284,7 +284,7 @@ class SmbProviderClientImpl : public SmbProviderClient {
proxy_->CallMethod( proxy_->CallMethod(
method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::BindOnce(&SmbProviderClientImpl::HandleDefaultCallback, base::BindOnce(&SmbProviderClientImpl::HandleDefaultCallback,
weak_ptr_factory_.GetWeakPtr(), method_call->GetMember(), GetWeakPtr(), method_call->GetMember(),
base::Passed(callback))); base::Passed(callback)));
} }
...@@ -413,11 +413,11 @@ class SmbProviderClientImpl : public SmbProviderClient { ...@@ -413,11 +413,11 @@ class SmbProviderClientImpl : public SmbProviderClient {
std::move(callback).Run(error, proto); std::move(callback).Run(error, proto);
} }
dbus::ObjectProxy* proxy_ = nullptr; base::WeakPtr<SmbProviderClientImpl> GetWeakPtr() {
return base::AsWeakPtr(this);
}
// Note: This should remain the last member so it'll be destroyed and dbus::ObjectProxy* proxy_ = nullptr;
// invalidate its weak pointers before any other members are destroyed.
base::WeakPtrFactory<SmbProviderClientImpl> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(SmbProviderClientImpl); DISALLOW_COPY_AND_ASSIGN(SmbProviderClientImpl);
}; };
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/callback.h" #include "base/callback.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/files/scoped_file.h" #include "base/files/scoped_file.h"
#include "base/memory/weak_ptr.h"
#include "chromeos/chromeos_export.h" #include "chromeos/chromeos_export.h"
#include "chromeos/dbus/dbus_client.h" #include "chromeos/dbus/dbus_client.h"
#include "chromeos/dbus/smbprovider/directory_entry.pb.h" #include "chromeos/dbus/smbprovider/directory_entry.pb.h"
...@@ -19,7 +20,9 @@ namespace chromeos { ...@@ -19,7 +20,9 @@ namespace chromeos {
// SmbProviderClient is used to communicate with the org.chromium.SmbProvider // SmbProviderClient is used to communicate with the org.chromium.SmbProvider
// service. All methods should be called from the origin thread (UI thread) // service. All methods should be called from the origin thread (UI thread)
// which initializes the DBusThreadManager instance. // which initializes the DBusThreadManager instance.
class CHROMEOS_EXPORT SmbProviderClient : public DBusClient { class CHROMEOS_EXPORT SmbProviderClient
: public DBusClient,
public base::SupportsWeakPtr<SmbProviderClient> {
public: public:
using GetMetdataEntryCallback = using GetMetdataEntryCallback =
base::OnceCallback<void(smbprovider::ErrorType error, base::OnceCallback<void(smbprovider::ErrorType error,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment