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 {
LockManager* lock_manager_;
};
void LockManager::CreateService(blink::mojom::LockManagerRequest request,
const url::Origin& origin) {
void LockManager::CreateService(
mojo::PendingReceiver<blink::mojom::LockManager> receiver,
const url::Origin& origin) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// TODO(jsbell): This should reflect the 'environment id' from HTML,
// and be the same opaque string seen in Service Worker client ids.
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(
......@@ -335,7 +336,7 @@ void LockManager::RequestLock(
return;
}
const auto& context = bindings_.dispatch_context();
const auto& context = receivers_.current_context();
if (!base::Contains(origins_, context.origin))
origins_.emplace(context.origin, this);
......@@ -373,7 +374,7 @@ void LockManager::ReleaseLock(const url::Origin& origin, int64_t lock_id) {
void LockManager::QueryState(QueryStateCallback callback) {
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);
if (origin_it == origins_.end()) {
std::move(callback).Run(std::vector<blink::mojom::LockInfoPtr>(),
......
......@@ -12,7 +12,7 @@
#include "base/memory/ref_counted.h"
#include "base/sequence_checker.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 "url/origin.h"
......@@ -26,7 +26,7 @@ class LockManager : public base::RefCountedThreadSafe<LockManager>,
public:
LockManager();
void CreateService(blink::mojom::LockManagerRequest request,
void CreateService(mojo::PendingReceiver<blink::mojom::LockManager> receiver,
const url::Origin& origin);
// Request a lock. When the lock is acquired, |callback| will be invoked with
......@@ -54,8 +54,8 @@ class LockManager : public base::RefCountedThreadSafe<LockManager>,
// State for a particular origin.
class OriginState;
// State for each client held in |bindings_|.
struct BindingState {
// State for each client held in |receivers_|.
struct ReceiverState {
url::Origin origin;
std::string client_id;
};
......@@ -74,7 +74,7 @@ class LockManager : public base::RefCountedThreadSafe<LockManager>,
// to process outstanding requests within the 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;
std::map<url::Origin, OriginState> origins_;
......
......@@ -227,12 +227,12 @@ ScriptPromise LockManager::request(ScriptState* script_state,
UseCounter::Count(context, WebFeature::kFileAccessedLocks);
}
if (!service_.get()) {
if (!service_.is_bound()) {
if (auto* provider = context->GetInterfaceProvider()) {
provider->GetInterface(mojo::MakeRequest(
&service_, context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
provider->GetInterface(service_.BindNewPipeAndPassReceiver(
context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
}
if (!service_.get()) {
if (!service_.is_bound()) {
exception_state.ThrowTypeError("Service not available.");
return ScriptPromise();
}
......@@ -347,12 +347,12 @@ ScriptPromise LockManager::query(ScriptState* script_state,
UseCounter::Count(context, WebFeature::kFileAccessedLocks);
}
if (!service_.get()) {
if (!service_.is_bound()) {
if (auto* provider = context->GetInterfaceProvider()) {
provider->GetInterface(mojo::MakeRequest(
&service_, context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
provider->GetInterface(service_.BindNewPipeAndPassReceiver(
context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
}
if (!service_.get()) {
if (!service_.is_bound()) {
exception_state.ThrowTypeError("Service not available.");
return ScriptPromise();
}
......
......@@ -6,6 +6,7 @@
#define THIRD_PARTY_BLINK_RENDERER_MODULES_LOCKS_LOCK_MANAGER_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/renderer/bindings/core/v8/string_or_string_sequence.h"
#include "third_party/blink/renderer/modules/locks/lock.h"
......@@ -66,7 +67,7 @@ class LockManager final : public ScriptWrappable,
HeapHashSet<Member<LockRequestImpl>> pending_requests_;
HeapHashSet<Member<Lock>> held_locks_;
mojom::blink::LockManagerPtr service_;
mojo::Remote<mojom::blink::LockManager> service_;
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