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

heap mojo: migrate NDEFWriter permission_service_

Use HeapMojoRemote wrapper so that Oilpan will GC the object.

BUG=chromium:1049056

Change-Id: I79e80eecadf9f15c43ef2a1f952440b8b677b6aa
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2145744
Commit-Queue: Johann Koenig <johannkoenig@google.com>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarReilly Grant <reillyg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759142}
parent c67e84c4
...@@ -39,11 +39,12 @@ NDEFWriter* NDEFWriter::Create(ExecutionContext* context) { ...@@ -39,11 +39,12 @@ NDEFWriter* NDEFWriter::Create(ExecutionContext* context) {
} }
NDEFWriter::NDEFWriter(ExecutionContext* context) NDEFWriter::NDEFWriter(ExecutionContext* context)
: ExecutionContextClient(context) {} : ExecutionContextClient(context), permission_service_(context) {}
void NDEFWriter::Trace(Visitor* visitor) { void NDEFWriter::Trace(Visitor* visitor) {
visitor->Trace(nfc_proxy_); visitor->Trace(permission_service_);
visitor->Trace(requests_); visitor->Trace(requests_);
visitor->Trace(nfc_proxy_);
ScriptWrappable::Trace(visitor); ScriptWrappable::Trace(visitor);
ExecutionContextClient::Trace(visitor); ExecutionContextClient::Trace(visitor);
} }
...@@ -98,10 +99,11 @@ ScriptPromise NDEFWriter::write(ScriptState* script_state, ...@@ -98,10 +99,11 @@ ScriptPromise NDEFWriter::write(ScriptState* script_state,
} }
PermissionService* NDEFWriter::GetPermissionService() { PermissionService* NDEFWriter::GetPermissionService() {
if (!permission_service_) { if (!permission_service_.is_bound()) {
ConnectToPermissionService( ConnectToPermissionService(
GetExecutionContext(), GetExecutionContext(),
permission_service_.BindNewPipeAndPassReceiver()); permission_service_.BindNewPipeAndPassReceiver(
GetExecutionContext()->GetTaskRunner(TaskType::kMiscPlatformAPI)));
} }
return permission_service_.get(); return permission_service_.get();
} }
......
...@@ -5,13 +5,14 @@ ...@@ -5,13 +5,14 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_NFC_NDEF_WRITER_H_ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_NFC_NDEF_WRITER_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_NFC_NDEF_WRITER_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_NFC_NDEF_WRITER_H_
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/permissions/permission.mojom-blink.h" #include "third_party/blink/public/mojom/permissions/permission.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.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/modules/nfc/nfc_proxy.h" #include "third_party/blink/renderer/modules/nfc/nfc_proxy.h"
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
#include "third_party/blink/renderer/platform/heap/heap_allocator.h" #include "third_party/blink/renderer/platform/heap/heap_allocator.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 {
...@@ -57,7 +58,9 @@ class NDEFWriter : public ScriptWrappable, public ExecutionContextClient { ...@@ -57,7 +58,9 @@ class NDEFWriter : public ScriptWrappable, public ExecutionContextClient {
mojom::blink::PermissionStatus status); mojom::blink::PermissionStatus status);
mojom::blink::PermissionService* GetPermissionService(); mojom::blink::PermissionService* GetPermissionService();
mojo::Remote<mojom::blink::PermissionService> permission_service_; HeapMojoRemote<mojom::blink::PermissionService,
HeapMojoWrapperMode::kWithoutContextObserver>
permission_service_;
// |requests_| are kept here to handle Mojo connection failures because // |requests_| are kept here to handle Mojo connection failures because
// in that case the callback passed to Push() won't be called and // in that case the callback passed to Push() won't be called and
......
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