Commit 4e2d70aa authored by Xunran Ding's avatar Xunran Ding Committed by Commit Bot

Migrate //content/renderer/dom_storage to OnceCallback

Bug: 714018

Change-Id: I735449654310ff89ecd2f5e7a56a638eb6bf7a28
Reviewed-on: https://chromium-review.googlesource.com/970383
Commit-Queue: Joshua Bell <jsbell@chromium.org>
Reviewed-by: default avatarJoshua Bell <jsbell@chromium.org>
Reviewed-by: default avatarMarijn Kruisselbrink <mek@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544910}
parent 64dafe84
...@@ -77,9 +77,9 @@ bool DOMStorageCachedArea::SetItem(int connection_id, ...@@ -77,9 +77,9 @@ bool DOMStorageCachedArea::SetItem(int connection_id,
virtual_time_pauser.PauseVirtualTime(true); virtual_time_pauser.PauseVirtualTime(true);
ignore_key_mutations_[key]++; ignore_key_mutations_[key]++;
proxy_->SetItem(connection_id, key, value, old_value, page_url, proxy_->SetItem(connection_id, key, value, old_value, page_url,
base::Bind(&DOMStorageCachedArea::OnSetItemComplete, base::BindOnce(&DOMStorageCachedArea::OnSetItemComplete,
weak_factory_.GetWeakPtr(), key, weak_factory_.GetWeakPtr(), key,
base::Passed(std::move(virtual_time_pauser)))); std::move(virtual_time_pauser)));
return true; return true;
} }
...@@ -105,9 +105,9 @@ void DOMStorageCachedArea::RemoveItem(int connection_id, ...@@ -105,9 +105,9 @@ void DOMStorageCachedArea::RemoveItem(int connection_id,
ignore_key_mutations_[key]++; ignore_key_mutations_[key]++;
proxy_->RemoveItem(connection_id, key, proxy_->RemoveItem(connection_id, key,
base::NullableString16(old_value, false), page_url, base::NullableString16(old_value, false), page_url,
base::Bind(&DOMStorageCachedArea::OnRemoveItemComplete, base::BindOnce(&DOMStorageCachedArea::OnRemoveItemComplete,
weak_factory_.GetWeakPtr(), key, weak_factory_.GetWeakPtr(), key,
base::Passed(std::move(virtual_time_pauser)))); std::move(virtual_time_pauser)));
} }
void DOMStorageCachedArea::Clear(int connection_id, const GURL& page_url) { void DOMStorageCachedArea::Clear(int connection_id, const GURL& page_url) {
...@@ -121,9 +121,9 @@ void DOMStorageCachedArea::Clear(int connection_id, const GURL& page_url) { ...@@ -121,9 +121,9 @@ void DOMStorageCachedArea::Clear(int connection_id, const GURL& page_url) {
virtual_time_pauser.PauseVirtualTime(true); virtual_time_pauser.PauseVirtualTime(true);
ignore_all_mutations_ = true; ignore_all_mutations_ = true;
proxy_->ClearArea(connection_id, page_url, proxy_->ClearArea(connection_id, page_url,
base::Bind(&DOMStorageCachedArea::OnClearComplete, base::BindOnce(&DOMStorageCachedArea::OnClearComplete,
weak_factory_.GetWeakPtr(), weak_factory_.GetWeakPtr(),
base::Passed(std::move(virtual_time_pauser)))); std::move(virtual_time_pauser)));
} }
void DOMStorageCachedArea::ApplyMutation( void DOMStorageCachedArea::ApplyMutation(
...@@ -182,10 +182,9 @@ void DOMStorageCachedArea::Prime(int connection_id) { ...@@ -182,10 +182,9 @@ void DOMStorageCachedArea::Prime(int connection_id) {
ignore_all_mutations_ = true; ignore_all_mutations_ = true;
DOMStorageValuesMap values; DOMStorageValuesMap values;
base::TimeTicks before = base::TimeTicks::Now(); base::TimeTicks before = base::TimeTicks::Now();
proxy_->LoadArea(connection_id, proxy_->LoadArea(connection_id, &values,
&values, base::BindOnce(&DOMStorageCachedArea::OnLoadComplete,
base::Bind(&DOMStorageCachedArea::OnLoadComplete, weak_factory_.GetWeakPtr()));
weak_factory_.GetWeakPtr()));
base::TimeDelta time_to_prime = base::TimeTicks::Now() - before; base::TimeDelta time_to_prime = base::TimeTicks::Now() - before;
// Keeping this histogram named the same (without the ForRenderer suffix) // Keeping this histogram named the same (without the ForRenderer suffix)
// to maintain histogram continuity. // to maintain histogram continuity.
......
...@@ -29,8 +29,8 @@ class MockProxy : public DOMStorageProxy { ...@@ -29,8 +29,8 @@ class MockProxy : public DOMStorageProxy {
void LoadArea(int connection_id, void LoadArea(int connection_id,
DOMStorageValuesMap* values, DOMStorageValuesMap* values,
const CompletionCallback& callback) override { CompletionCallback callback) override {
pending_callbacks_.push_back(callback); pending_callbacks_.push_back(std::move(callback));
observed_load_area_ = true; observed_load_area_ = true;
observed_connection_id_ = connection_id; observed_connection_id_ = connection_id;
*values = load_area_return_values_; *values = load_area_return_values_;
...@@ -41,8 +41,8 @@ class MockProxy : public DOMStorageProxy { ...@@ -41,8 +41,8 @@ class MockProxy : public DOMStorageProxy {
const base::string16& value, const base::string16& value,
const base::NullableString16& old_value, const base::NullableString16& old_value,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) override { CompletionCallback callback) override {
pending_callbacks_.push_back(callback); pending_callbacks_.push_back(std::move(callback));
observed_set_item_ = true; observed_set_item_ = true;
observed_connection_id_ = connection_id; observed_connection_id_ = connection_id;
observed_key_ = key; observed_key_ = key;
...@@ -54,8 +54,8 @@ class MockProxy : public DOMStorageProxy { ...@@ -54,8 +54,8 @@ class MockProxy : public DOMStorageProxy {
const base::string16& key, const base::string16& key,
const base::NullableString16& old_value, const base::NullableString16& old_value,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) override { CompletionCallback callback) override {
pending_callbacks_.push_back(callback); pending_callbacks_.push_back(std::move(callback));
observed_remove_item_ = true; observed_remove_item_ = true;
observed_connection_id_ = connection_id; observed_connection_id_ = connection_id;
observed_key_ = key; observed_key_ = key;
...@@ -64,8 +64,8 @@ class MockProxy : public DOMStorageProxy { ...@@ -64,8 +64,8 @@ class MockProxy : public DOMStorageProxy {
void ClearArea(int connection_id, void ClearArea(int connection_id,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) override { CompletionCallback callback) override {
pending_callbacks_.push_back(callback); pending_callbacks_.push_back(std::move(callback));
observed_clear_area_ = true; observed_clear_area_ = true;
observed_connection_id_ = connection_id; observed_connection_id_ = connection_id;
observed_page_url_ = page_url; observed_page_url_ = page_url;
...@@ -91,7 +91,7 @@ class MockProxy : public DOMStorageProxy { ...@@ -91,7 +91,7 @@ class MockProxy : public DOMStorageProxy {
void CompleteOnePendingCallback(bool success) { void CompleteOnePendingCallback(bool success) {
ASSERT_TRUE(!pending_callbacks_.empty()); ASSERT_TRUE(!pending_callbacks_.empty());
pending_callbacks_.front().Run(success); std::move(pending_callbacks_.front()).Run(success);
pending_callbacks_.pop_front(); pending_callbacks_.pop_front();
} }
......
...@@ -110,21 +110,21 @@ class DomStorageDispatcher::ProxyImpl : public DOMStorageProxy { ...@@ -110,21 +110,21 @@ class DomStorageDispatcher::ProxyImpl : public DOMStorageProxy {
// DOMStorageProxy interface for use by DOMStorageCachedArea. // DOMStorageProxy interface for use by DOMStorageCachedArea.
void LoadArea(int connection_id, void LoadArea(int connection_id,
DOMStorageValuesMap* values, DOMStorageValuesMap* values,
const CompletionCallback& callback) override; CompletionCallback callback) override;
void SetItem(int connection_id, void SetItem(int connection_id,
const base::string16& key, const base::string16& key,
const base::string16& value, const base::string16& value,
const base::NullableString16& old_value, const base::NullableString16& old_value,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) override; CompletionCallback callback) override;
void RemoveItem(int connection_id, void RemoveItem(int connection_id,
const base::string16& key, const base::string16& key,
const base::NullableString16& old_value, const base::NullableString16& old_value,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) override; CompletionCallback callback) override;
void ClearArea(int connection_id, void ClearArea(int connection_id,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) override; CompletionCallback callback) override;
private: private:
// Struct to hold references to our contained areas and // Struct to hold references to our contained areas and
...@@ -141,7 +141,7 @@ class DomStorageDispatcher::ProxyImpl : public DOMStorageProxy { ...@@ -141,7 +141,7 @@ class DomStorageDispatcher::ProxyImpl : public DOMStorageProxy {
~ProxyImpl() override {} ~ProxyImpl() override {}
void PushPendingCallback(const CompletionCallback& callback) { void PushPendingCallback(CompletionCallback callback) {
// Terminate the renderer if an excessive number of calls are made, // Terminate the renderer if an excessive number of calls are made,
// This is indicative of script in an infinite loop or being malicious. // This is indicative of script in an infinite loop or being malicious.
// It's better to crash intentionally than by running the system OOM // It's better to crash intentionally than by running the system OOM
...@@ -154,11 +154,11 @@ class DomStorageDispatcher::ProxyImpl : public DOMStorageProxy { ...@@ -154,11 +154,11 @@ class DomStorageDispatcher::ProxyImpl : public DOMStorageProxy {
// to more reliably commit changes during shutdown. // to more reliably commit changes during shutdown.
if (pending_callbacks_.empty()) if (pending_callbacks_.empty())
blink::Platform::Current()->SuddenTerminationChanged(false); blink::Platform::Current()->SuddenTerminationChanged(false);
pending_callbacks_.push_back(callback); pending_callbacks_.push_back(std::move(callback));
} }
CompletionCallback PopPendingCallback() { CompletionCallback PopPendingCallback() {
CompletionCallback callback = pending_callbacks_.front(); CompletionCallback callback = std::move(pending_callbacks_.front());
pending_callbacks_.pop_front(); pending_callbacks_.pop_front();
if (pending_callbacks_.empty()) if (pending_callbacks_.empty())
blink::Platform::Current()->SuddenTerminationChanged(true); blink::Platform::Current()->SuddenTerminationChanged(true);
...@@ -238,10 +238,10 @@ void DomStorageDispatcher::ProxyImpl::Shutdown() { ...@@ -238,10 +238,10 @@ void DomStorageDispatcher::ProxyImpl::Shutdown() {
pending_callbacks_.clear(); pending_callbacks_.clear();
} }
void DomStorageDispatcher::ProxyImpl::LoadArea( void DomStorageDispatcher::ProxyImpl::LoadArea(int connection_id,
int connection_id, DOMStorageValuesMap* values, DOMStorageValuesMap* values,
const CompletionCallback& callback) { CompletionCallback callback) {
PushPendingCallback(callback); PushPendingCallback(std::move(callback));
throttling_filter_->SendThrottled(new DOMStorageHostMsg_LoadStorageArea( throttling_filter_->SendThrottled(new DOMStorageHostMsg_LoadStorageArea(
connection_id, values)); connection_id, values));
} }
...@@ -252,8 +252,8 @@ void DomStorageDispatcher::ProxyImpl::SetItem( ...@@ -252,8 +252,8 @@ void DomStorageDispatcher::ProxyImpl::SetItem(
const base::string16& value, const base::string16& value,
const base::NullableString16& old_value, const base::NullableString16& old_value,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) { CompletionCallback callback) {
PushPendingCallback(callback); PushPendingCallback(std::move(callback));
throttling_filter_->SendThrottled(new DOMStorageHostMsg_SetItem( throttling_filter_->SendThrottled(new DOMStorageHostMsg_SetItem(
connection_id, key, value, old_value, page_url)); connection_id, key, value, old_value, page_url));
} }
...@@ -263,16 +263,16 @@ void DomStorageDispatcher::ProxyImpl::RemoveItem( ...@@ -263,16 +263,16 @@ void DomStorageDispatcher::ProxyImpl::RemoveItem(
const base::string16& key, const base::string16& key,
const base::NullableString16& old_value, const base::NullableString16& old_value,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) { CompletionCallback callback) {
PushPendingCallback(callback); PushPendingCallback(std::move(callback));
throttling_filter_->SendThrottled(new DOMStorageHostMsg_RemoveItem( throttling_filter_->SendThrottled(new DOMStorageHostMsg_RemoveItem(
connection_id, key, old_value, page_url)); connection_id, key, old_value, page_url));
} }
void DomStorageDispatcher::ProxyImpl::ClearArea(int connection_id, void DomStorageDispatcher::ProxyImpl::ClearArea(int connection_id,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) { CompletionCallback callback) {
PushPendingCallback(callback); PushPendingCallback(std::move(callback));
throttling_filter_->SendThrottled(new DOMStorageHostMsg_Clear( throttling_filter_->SendThrottled(new DOMStorageHostMsg_Clear(
connection_id, page_url)); connection_id, page_url));
} }
......
...@@ -17,28 +17,28 @@ namespace content { ...@@ -17,28 +17,28 @@ namespace content {
// Abstract interface for cached area, renderer to browser communications. // Abstract interface for cached area, renderer to browser communications.
class DOMStorageProxy : public base::RefCounted<DOMStorageProxy> { class DOMStorageProxy : public base::RefCounted<DOMStorageProxy> {
public: public:
typedef base::Callback<void(bool)> CompletionCallback; typedef base::OnceCallback<void(bool)> CompletionCallback;
virtual void LoadArea(int connection_id, virtual void LoadArea(int connection_id,
DOMStorageValuesMap* values, DOMStorageValuesMap* values,
const CompletionCallback& callback) = 0; CompletionCallback callback) = 0;
virtual void SetItem(int connection_id, virtual void SetItem(int connection_id,
const base::string16& key, const base::string16& key,
const base::string16& value, const base::string16& value,
const base::NullableString16& old_value, const base::NullableString16& old_value,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) = 0; CompletionCallback callback) = 0;
virtual void RemoveItem(int connection_id, virtual void RemoveItem(int connection_id,
const base::string16& key, const base::string16& key,
const base::NullableString16& old_value, const base::NullableString16& old_value,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) = 0; CompletionCallback callback) = 0;
virtual void ClearArea(int connection_id, virtual void ClearArea(int connection_id,
const GURL& page_url, const GURL& page_url,
const CompletionCallback& callback) = 0; CompletionCallback callback) = 0;
protected: protected:
friend class base::RefCounted<DOMStorageProxy>; friend class base::RefCounted<DOMStorageProxy>;
......
...@@ -32,20 +32,21 @@ enum class StorageFormat : uint8_t { UTF16 = 0, Latin1 = 1 }; ...@@ -32,20 +32,21 @@ enum class StorageFormat : uint8_t { UTF16 = 0, Latin1 = 1 };
class GetAllCallback : public mojom::LevelDBWrapperGetAllCallback { class GetAllCallback : public mojom::LevelDBWrapperGetAllCallback {
public: public:
static mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo CreateAndBind( static mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo CreateAndBind(
const base::Callback<void(bool)>& callback) { base::OnceCallback<void(bool)> callback) {
mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo ptr_info; mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo ptr_info;
auto request = mojo::MakeRequest(&ptr_info); auto request = mojo::MakeRequest(&ptr_info);
mojo::MakeStrongAssociatedBinding( mojo::MakeStrongAssociatedBinding(
base::WrapUnique(new GetAllCallback(callback)), std::move(request)); base::WrapUnique(new GetAllCallback(std::move(callback))),
std::move(request));
return ptr_info; return ptr_info;
} }
private: private:
explicit GetAllCallback(const base::Callback<void(bool)>& callback) explicit GetAllCallback(base::OnceCallback<void(bool)> callback)
: m_callback(callback) {} : m_callback(std::move(callback)) {}
void Complete(bool success) override { m_callback.Run(success); } void Complete(bool success) override { std::move(m_callback).Run(success); }
base::Callback<void(bool)> m_callback; base::OnceCallback<void(bool)> m_callback;
}; };
} // namespace } // namespace
...@@ -428,8 +429,8 @@ void LocalStorageCachedArea::EnsureLoaded() { ...@@ -428,8 +429,8 @@ void LocalStorageCachedArea::EnsureLoaded() {
leveldb::mojom::DatabaseError status = leveldb::mojom::DatabaseError::OK; leveldb::mojom::DatabaseError status = leveldb::mojom::DatabaseError::OK;
std::vector<content::mojom::KeyValuePtr> data; std::vector<content::mojom::KeyValuePtr> data;
leveldb_->GetAll(GetAllCallback::CreateAndBind( leveldb_->GetAll(GetAllCallback::CreateAndBind(
base::Bind(&LocalStorageCachedArea::OnGetAllComplete, base::BindOnce(&LocalStorageCachedArea::OnGetAllComplete,
weak_factory_.GetWeakPtr())), weak_factory_.GetWeakPtr())),
&status, &data); &status, &data);
DOMStorageValuesMap values; DOMStorageValuesMap values;
......
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