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,
class SmbProviderClientImpl : public SmbProviderClient {
public:
SmbProviderClientImpl() : weak_ptr_factory_(this) {}
SmbProviderClientImpl() = default;
~SmbProviderClientImpl() override {}
......@@ -260,9 +260,9 @@ class SmbProviderClientImpl : public SmbProviderClient {
void CallMethod(dbus::MethodCall* method_call,
CallbackHandler handler,
Callback callback) {
proxy_->CallMethod(method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::BindOnce(handler, weak_ptr_factory_.GetWeakPtr(),
base::Passed(callback)));
proxy_->CallMethod(
method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::BindOnce(handler, GetWeakPtr(), base::Passed(callback)));
}
// Calls the D-Bus method |name|, passing the |protobuf| as an argument.
......@@ -284,7 +284,7 @@ class SmbProviderClientImpl : public SmbProviderClient {
proxy_->CallMethod(
method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::BindOnce(&SmbProviderClientImpl::HandleDefaultCallback,
weak_ptr_factory_.GetWeakPtr(), method_call->GetMember(),
GetWeakPtr(), method_call->GetMember(),
base::Passed(callback)));
}
......@@ -413,11 +413,11 @@ class SmbProviderClientImpl : public SmbProviderClient {
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
// invalidate its weak pointers before any other members are destroyed.
base::WeakPtrFactory<SmbProviderClientImpl> weak_ptr_factory_;
dbus::ObjectProxy* proxy_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(SmbProviderClientImpl);
};
......
......@@ -8,6 +8,7 @@
#include "base/callback.h"
#include "base/files/file_path.h"
#include "base/files/scoped_file.h"
#include "base/memory/weak_ptr.h"
#include "chromeos/chromeos_export.h"
#include "chromeos/dbus/dbus_client.h"
#include "chromeos/dbus/smbprovider/directory_entry.pb.h"
......@@ -19,7 +20,9 @@ namespace chromeos {
// SmbProviderClient is used to communicate with the org.chromium.SmbProvider
// service. All methods should be called from the origin thread (UI thread)
// which initializes the DBusThreadManager instance.
class CHROMEOS_EXPORT SmbProviderClient : public DBusClient {
class CHROMEOS_EXPORT SmbProviderClient
: public DBusClient,
public base::SupportsWeakPtr<SmbProviderClient> {
public:
using GetMetdataEntryCallback =
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