Commit 3e2cf3c7 authored by Julie Jeongeun Kim's avatar Julie Jeongeun Kim Committed by Commit Bot

Convert LockManager to new Mojo types

This CL converts LockManagerRequest and LockManagerRequestPtr
to new Mojo types.
It also replaces using BindingSet with ReceiverSet.

Bug: 955171, 978694
Change-Id: Icc5f15537f3eb36deb94a3d26a5ccf2a91990898
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1771364
Commit-Queue: Julie Kim <jkim@igalia.com>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarVictor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#691546}
parent 7ea29ac9
...@@ -307,15 +307,16 @@ class LockManager::OriginState { ...@@ -307,15 +307,16 @@ class LockManager::OriginState {
LockManager* lock_manager_; LockManager* lock_manager_;
}; };
void LockManager::CreateService(blink::mojom::LockManagerRequest request, void LockManager::CreateService(
const url::Origin& origin) { mojo::PendingReceiver<blink::mojom::LockManager> receiver,
const url::Origin& origin) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// TODO(jsbell): This should reflect the 'environment id' from HTML, // TODO(jsbell): This should reflect the 'environment id' from HTML,
// and be the same opaque string seen in Service Worker client ids. // and be the same opaque string seen in Service Worker client ids.
const std::string client_id = base::GenerateGUID(); const std::string client_id = base::GenerateGUID();
bindings_.AddBinding(this, std::move(request), {origin, client_id}); receivers_.Add(this, std::move(receiver), {origin, client_id});
} }
void LockManager::RequestLock( void LockManager::RequestLock(
...@@ -335,7 +336,7 @@ void LockManager::RequestLock( ...@@ -335,7 +336,7 @@ void LockManager::RequestLock(
return; return;
} }
const auto& context = bindings_.dispatch_context(); const auto& context = receivers_.current_context();
if (!base::Contains(origins_, context.origin)) if (!base::Contains(origins_, context.origin))
origins_.emplace(context.origin, this); origins_.emplace(context.origin, this);
...@@ -373,7 +374,7 @@ void LockManager::ReleaseLock(const url::Origin& origin, int64_t lock_id) { ...@@ -373,7 +374,7 @@ void LockManager::ReleaseLock(const url::Origin& origin, int64_t lock_id) {
void LockManager::QueryState(QueryStateCallback callback) { void LockManager::QueryState(QueryStateCallback callback) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
const url::Origin& origin = bindings_.dispatch_context().origin; const url::Origin& origin = receivers_.current_context().origin;
auto origin_it = origins_.find(origin); auto origin_it = origins_.find(origin);
if (origin_it == origins_.end()) { if (origin_it == origins_.end()) {
std::move(callback).Run(std::vector<blink::mojom::LockInfoPtr>(), std::move(callback).Run(std::vector<blink::mojom::LockInfoPtr>(),
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/sequence_checker.h" #include "base/sequence_checker.h"
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
#include "mojo/public/cpp/bindings/binding_set.h" #include "mojo/public/cpp/bindings/receiver_set.h"
#include "third_party/blink/public/mojom/locks/lock_manager.mojom.h" #include "third_party/blink/public/mojom/locks/lock_manager.mojom.h"
#include "url/origin.h" #include "url/origin.h"
...@@ -26,7 +26,7 @@ class LockManager : public base::RefCountedThreadSafe<LockManager>, ...@@ -26,7 +26,7 @@ class LockManager : public base::RefCountedThreadSafe<LockManager>,
public: public:
LockManager(); LockManager();
void CreateService(blink::mojom::LockManagerRequest request, void CreateService(mojo::PendingReceiver<blink::mojom::LockManager> receiver,
const url::Origin& origin); const url::Origin& origin);
// Request a lock. When the lock is acquired, |callback| will be invoked with // Request a lock. When the lock is acquired, |callback| will be invoked with
...@@ -54,8 +54,8 @@ class LockManager : public base::RefCountedThreadSafe<LockManager>, ...@@ -54,8 +54,8 @@ class LockManager : public base::RefCountedThreadSafe<LockManager>,
// State for a particular origin. // State for a particular origin.
class OriginState; class OriginState;
// State for each client held in |bindings_|. // State for each client held in |receivers_|.
struct BindingState { struct ReceiverState {
url::Origin origin; url::Origin origin;
std::string client_id; std::string client_id;
}; };
...@@ -74,7 +74,7 @@ class LockManager : public base::RefCountedThreadSafe<LockManager>, ...@@ -74,7 +74,7 @@ class LockManager : public base::RefCountedThreadSafe<LockManager>,
// to process outstanding requests within the origin. // to process outstanding requests within the origin.
void ProcessRequests(const url::Origin& origin); void ProcessRequests(const url::Origin& origin);
mojo::BindingSet<blink::mojom::LockManager, BindingState> bindings_; mojo::ReceiverSet<blink::mojom::LockManager, ReceiverState> receivers_;
int64_t next_lock_id_ = 0; int64_t next_lock_id_ = 0;
std::map<url::Origin, OriginState> origins_; std::map<url::Origin, OriginState> origins_;
......
...@@ -227,12 +227,12 @@ ScriptPromise LockManager::request(ScriptState* script_state, ...@@ -227,12 +227,12 @@ ScriptPromise LockManager::request(ScriptState* script_state,
UseCounter::Count(context, WebFeature::kFileAccessedLocks); UseCounter::Count(context, WebFeature::kFileAccessedLocks);
} }
if (!service_.get()) { if (!service_.is_bound()) {
if (auto* provider = context->GetInterfaceProvider()) { if (auto* provider = context->GetInterfaceProvider()) {
provider->GetInterface(mojo::MakeRequest( provider->GetInterface(service_.BindNewPipeAndPassReceiver(
&service_, context->GetTaskRunner(TaskType::kMiscPlatformAPI))); context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
} }
if (!service_.get()) { if (!service_.is_bound()) {
exception_state.ThrowTypeError("Service not available."); exception_state.ThrowTypeError("Service not available.");
return ScriptPromise(); return ScriptPromise();
} }
...@@ -347,12 +347,12 @@ ScriptPromise LockManager::query(ScriptState* script_state, ...@@ -347,12 +347,12 @@ ScriptPromise LockManager::query(ScriptState* script_state,
UseCounter::Count(context, WebFeature::kFileAccessedLocks); UseCounter::Count(context, WebFeature::kFileAccessedLocks);
} }
if (!service_.get()) { if (!service_.is_bound()) {
if (auto* provider = context->GetInterfaceProvider()) { if (auto* provider = context->GetInterfaceProvider()) {
provider->GetInterface(mojo::MakeRequest( provider->GetInterface(service_.BindNewPipeAndPassReceiver(
&service_, context->GetTaskRunner(TaskType::kMiscPlatformAPI))); context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
} }
if (!service_.get()) { if (!service_.is_bound()) {
exception_state.ThrowTypeError("Service not available."); exception_state.ThrowTypeError("Service not available.");
return ScriptPromise(); return ScriptPromise();
} }
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define THIRD_PARTY_BLINK_RENDERER_MODULES_LOCKS_LOCK_MANAGER_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_LOCKS_LOCK_MANAGER_H_
#include "base/macros.h" #include "base/macros.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/locks/lock_manager.mojom-blink.h" #include "third_party/blink/public/mojom/locks/lock_manager.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/string_or_string_sequence.h" #include "third_party/blink/renderer/bindings/core/v8/string_or_string_sequence.h"
#include "third_party/blink/renderer/modules/locks/lock.h" #include "third_party/blink/renderer/modules/locks/lock.h"
...@@ -66,7 +67,7 @@ class LockManager final : public ScriptWrappable, ...@@ -66,7 +67,7 @@ class LockManager final : public ScriptWrappable,
HeapHashSet<Member<LockRequestImpl>> pending_requests_; HeapHashSet<Member<LockRequestImpl>> pending_requests_;
HeapHashSet<Member<Lock>> held_locks_; HeapHashSet<Member<Lock>> held_locks_;
mojom::blink::LockManagerPtr service_; mojo::Remote<mojom::blink::LockManager> service_;
DISALLOW_COPY_AND_ASSIGN(LockManager); DISALLOW_COPY_AND_ASSIGN(LockManager);
}; };
......
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