Commit b533fcaf authored by Minoru Chikamune's avatar Minoru Chikamune Committed by Commit Bot

Migrate KeyboardLock to use GC mojo wrappers.

No behavior change. This CL reduces potential risks of use-after-free bugs.

Bug: 1049056
Change-Id: Icf74f98bc7d2472c1475b38558aec93bd13640e9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2132079Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Cr-Commit-Position: refs/heads/master@{#756086}
parent d35b2fad
...@@ -38,7 +38,7 @@ constexpr char kKeyboardLockRequestFailedErrorMsg[] = ...@@ -38,7 +38,7 @@ constexpr char kKeyboardLockRequestFailedErrorMsg[] =
} // namespace } // namespace
KeyboardLock::KeyboardLock(ExecutionContext* context) KeyboardLock::KeyboardLock(ExecutionContext* context)
: ExecutionContextClient(context) {} : ExecutionContextClient(context), service_(context) {}
KeyboardLock::~KeyboardLock() = default; KeyboardLock::~KeyboardLock() = default;
...@@ -93,7 +93,7 @@ bool KeyboardLock::IsLocalFrameAttached() { ...@@ -93,7 +93,7 @@ bool KeyboardLock::IsLocalFrameAttached() {
} }
bool KeyboardLock::EnsureServiceConnected() { bool KeyboardLock::EnsureServiceConnected() {
if (!service_) { if (!service_.is_bound()) {
LocalFrame* frame = GetFrame(); LocalFrame* frame = GetFrame();
if (!frame) { if (!frame) {
return false; return false;
...@@ -102,7 +102,7 @@ bool KeyboardLock::EnsureServiceConnected() { ...@@ -102,7 +102,7 @@ bool KeyboardLock::EnsureServiceConnected() {
frame->GetBrowserInterfaceBroker().GetInterface( frame->GetBrowserInterfaceBroker().GetInterface(
service_.BindNewPipeAndPassReceiver( service_.BindNewPipeAndPassReceiver(
frame->GetTaskRunner(TaskType::kMiscPlatformAPI))); frame->GetTaskRunner(TaskType::kMiscPlatformAPI)));
DCHECK(service_); DCHECK(service_.is_bound());
} }
return true; return true;
...@@ -156,6 +156,7 @@ void KeyboardLock::LockRequestFinished( ...@@ -156,6 +156,7 @@ void KeyboardLock::LockRequestFinished(
} }
void KeyboardLock::Trace(Visitor* visitor) { void KeyboardLock::Trace(Visitor* visitor) {
visitor->Trace(service_);
visitor->Trace(request_keylock_resolver_); visitor->Trace(request_keylock_resolver_);
ExecutionContextClient::Trace(visitor); ExecutionContextClient::Trace(visitor);
} }
......
...@@ -6,12 +6,13 @@ ...@@ -6,12 +6,13 @@
#define THIRD_PARTY_BLINK_RENDERER_MODULES_KEYBOARD_KEYBOARD_LOCK_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_KEYBOARD_KEYBOARD_LOCK_H_
#include "base/macros.h" #include "base/macros.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/keyboard_lock/keyboard_lock.mojom-blink.h" #include "third_party/blink/public/mojom/keyboard_lock/keyboard_lock.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" #include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h"
#include "third_party/blink/renderer/platform/heap/member.h" #include "third_party/blink/renderer/platform/heap/member.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h"
namespace blink { namespace blink {
...@@ -44,7 +45,9 @@ class KeyboardLock final : public GarbageCollected<KeyboardLock>, ...@@ -44,7 +45,9 @@ class KeyboardLock final : public GarbageCollected<KeyboardLock>,
void LockRequestFinished(ScriptPromiseResolver*, void LockRequestFinished(ScriptPromiseResolver*,
mojom::KeyboardLockRequestResult); mojom::KeyboardLockRequestResult);
mojo::Remote<mojom::blink::KeyboardLockService> service_; HeapMojoRemote<mojom::blink::KeyboardLockService,
HeapMojoWrapperMode::kWithoutContextObserver>
service_;
Member<ScriptPromiseResolver> request_keylock_resolver_; Member<ScriptPromiseResolver> request_keylock_resolver_;
DISALLOW_COPY_AND_ASSIGN(KeyboardLock); DISALLOW_COPY_AND_ASSIGN(KeyboardLock);
......
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