Commit 49706117 authored by Johann's avatar Johann Committed by Commit Bot

heap mojo: migrate credential manager Remote objects

Use HeapMojoRemote wrapper for authenticator_, credential_manager_,
and sms_receiver_.

This puts the objects on the heap so that Oilpan will manage/GC them.

Bug: chromium:1049056

Change-Id: I7d8d281780c667cfd9feeded592587d74572c90b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2144805Reviewed-by: default avatarKeishi Hattori <keishi@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarVasilii Sukhanov <vasilii@chromium.org>
Commit-Queue: Johann Koenig <johannkoenig@google.com>
Cr-Commit-Position: refs/heads/master@{#770984}
parent 768a680c
...@@ -12,7 +12,10 @@ ...@@ -12,7 +12,10 @@
namespace blink { namespace blink {
CredentialManagerProxy::CredentialManagerProxy(LocalDOMWindow& window) CredentialManagerProxy::CredentialManagerProxy(LocalDOMWindow& window)
: Supplement<LocalDOMWindow>(window) { : Supplement<LocalDOMWindow>(window),
authenticator_(window.GetExecutionContext()),
credential_manager_(window.GetExecutionContext()),
sms_receiver_(window.GetExecutionContext()) {
LocalFrame* frame = window.GetFrame(); LocalFrame* frame = window.GetFrame();
DCHECK(frame); DCHECK(frame);
frame->GetBrowserInterfaceBroker().GetInterface( frame->GetBrowserInterfaceBroker().GetInterface(
...@@ -26,7 +29,7 @@ CredentialManagerProxy::CredentialManagerProxy(LocalDOMWindow& window) ...@@ -26,7 +29,7 @@ CredentialManagerProxy::CredentialManagerProxy(LocalDOMWindow& window)
CredentialManagerProxy::~CredentialManagerProxy() = default; CredentialManagerProxy::~CredentialManagerProxy() = default;
mojom::blink::SmsReceiver* CredentialManagerProxy::SmsReceiver() { mojom::blink::SmsReceiver* CredentialManagerProxy::SmsReceiver() {
if (!sms_receiver_) { if (!sms_receiver_.is_bound()) {
LocalFrame* frame = GetSupplementable()->GetFrame(); LocalFrame* frame = GetSupplementable()->GetFrame();
DCHECK(frame); DCHECK(frame);
frame->GetBrowserInterfaceBroker().GetInterface( frame->GetBrowserInterfaceBroker().GetInterface(
...@@ -50,6 +53,13 @@ CredentialManagerProxy* CredentialManagerProxy::From( ...@@ -50,6 +53,13 @@ CredentialManagerProxy* CredentialManagerProxy::From(
return supplement; return supplement;
} }
void CredentialManagerProxy::Trace(Visitor* visitor) const {
visitor->Trace(authenticator_);
visitor->Trace(credential_manager_);
visitor->Trace(sms_receiver_);
Supplement<LocalDOMWindow>::Trace(visitor);
}
// static // static
const char CredentialManagerProxy::kSupplementName[] = "CredentialManagerProxy"; const char CredentialManagerProxy::kSupplementName[] = "CredentialManagerProxy";
......
...@@ -5,13 +5,14 @@ ...@@ -5,13 +5,14 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_CREDENTIALMANAGER_CREDENTIAL_MANAGER_PROXY_H_ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_CREDENTIALMANAGER_CREDENTIAL_MANAGER_PROXY_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_CREDENTIALMANAGER_CREDENTIAL_MANAGER_PROXY_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_CREDENTIALMANAGER_CREDENTIAL_MANAGER_PROXY_H_
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom-blink.h" #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom-blink.h"
#include "third_party/blink/public/mojom/sms/sms_receiver.mojom-blink.h" #include "third_party/blink/public/mojom/sms/sms_receiver.mojom-blink.h"
#include "third_party/blink/public/mojom/webauthn/authenticator.mojom-blink.h" #include "third_party/blink/public/mojom/webauthn/authenticator.mojom-blink.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/platform/heap/handle.h" #include "third_party/blink/renderer/platform/heap/handle.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h"
#include "third_party/blink/renderer/platform/supplementable.h" #include "third_party/blink/renderer/platform/supplementable.h"
namespace blink { namespace blink {
...@@ -52,14 +53,22 @@ class MODULES_EXPORT CredentialManagerProxy ...@@ -52,14 +53,22 @@ class MODULES_EXPORT CredentialManagerProxy
credential_manager_.FlushForTesting(); credential_manager_.FlushForTesting();
} }
void Trace(Visitor*) const override;
// Must be called only with argument representing a valid // Must be called only with argument representing a valid
// context corresponding to an attached window. // context corresponding to an attached window.
static CredentialManagerProxy* From(ScriptState*); static CredentialManagerProxy* From(ScriptState*);
private: private:
mojo::Remote<mojom::blink::Authenticator> authenticator_; HeapMojoRemote<mojom::blink::Authenticator,
mojo::Remote<mojom::blink::CredentialManager> credential_manager_; HeapMojoWrapperMode::kWithoutContextObserver>
mojo::Remote<mojom::blink::SmsReceiver> sms_receiver_; authenticator_;
HeapMojoRemote<mojom::blink::CredentialManager,
HeapMojoWrapperMode::kWithoutContextObserver>
credential_manager_;
HeapMojoRemote<mojom::blink::SmsReceiver,
HeapMojoWrapperMode::kWithoutContextObserver>
sms_receiver_;
}; };
} // namespace blink } // namespace blink
......
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