Commit 28ca17a9 authored by Johann's avatar Johann Committed by Commit Bot

heap mojo: migrate color chooser receiver_

Use the HeapMojoReceiver wrapper so that Oilpan will GC the object.

Change-Id: I1e6dd0bcfb375f518c8386a261c20ded2c17da04
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2099347
Commit-Queue: Johann Koenig <johannkoenig@google.com>
Reviewed-by: default avatarKeishi Hattori <keishi@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#749554}
parent e0ba2d45
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "third_party/blink/public/common/browser_interface_broker_proxy.h" #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
#include "third_party/blink/public/web/web_local_frame_client.h" #include "third_party/blink/public/web/web_local_frame_client.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/web_local_frame_impl.h" #include "third_party/blink/renderer/core/frame/web_local_frame_impl.h"
#include "third_party/blink/renderer/core/html/forms/color_chooser_client.h" #include "third_party/blink/renderer/core/html/forms/color_chooser_client.h"
#include "third_party/blink/renderer/platform/graphics/color.h" #include "third_party/blink/renderer/platform/graphics/color.h"
...@@ -37,20 +38,19 @@ namespace blink { ...@@ -37,20 +38,19 @@ namespace blink {
ColorChooserUIController::ColorChooserUIController( ColorChooserUIController::ColorChooserUIController(
LocalFrame* frame, LocalFrame* frame,
blink::ColorChooserClient* client) blink::ColorChooserClient* client)
: client_(client), frame_(frame) {} : client_(client),
frame_(frame),
receiver_(this, frame->DomWindow()->GetExecutionContext()) {}
ColorChooserUIController::~ColorChooserUIController() {} ColorChooserUIController::~ColorChooserUIController() = default;
void ColorChooserUIController::Trace(Visitor* visitor) { void ColorChooserUIController::Trace(Visitor* visitor) {
visitor->Trace(receiver_);
visitor->Trace(frame_); visitor->Trace(frame_);
visitor->Trace(client_); visitor->Trace(client_);
ColorChooser::Trace(visitor); ColorChooser::Trace(visitor);
} }
void ColorChooserUIController::Dispose() {
receiver_.reset();
}
void ColorChooserUIController::OpenUI() { void ColorChooserUIController::OpenUI() {
OpenColorChooser(); OpenColorChooser();
} }
...@@ -80,8 +80,10 @@ void ColorChooserUIController::OpenColorChooser() { ...@@ -80,8 +80,10 @@ void ColorChooserUIController::OpenColorChooser() {
color_chooser_factory_.BindNewPipeAndPassReceiver()); color_chooser_factory_.BindNewPipeAndPassReceiver());
color_chooser_factory_->OpenColorChooser( color_chooser_factory_->OpenColorChooser(
chooser_.BindNewPipeAndPassReceiver(), chooser_.BindNewPipeAndPassReceiver(),
receiver_.BindNewPipeAndPassRemote(), client_->CurrentColor().Rgb(), receiver_.BindNewPipeAndPassRemote(
client_->Suggestions()); frame_->DomWindow()->GetExecutionContext()->GetTaskRunner(
TaskType::kUserInteraction)),
client_->CurrentColor().Rgb(), client_->Suggestions());
receiver_.set_disconnect_handler(WTF::Bind( receiver_.set_disconnect_handler(WTF::Bind(
&ColorChooserUIController::EndChooser, WrapWeakPersistent(this))); &ColorChooserUIController::EndChooser, WrapWeakPersistent(this)));
} }
......
...@@ -27,12 +27,12 @@ ...@@ -27,12 +27,12 @@
#define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_FORMS_COLOR_CHOOSER_UI_CONTROLLER_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_FORMS_COLOR_CHOOSER_UI_CONTROLLER_H_
#include <memory> #include <memory>
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/choosers/color_chooser.mojom-blink.h" #include "third_party/blink/public/mojom/choosers/color_chooser.mojom-blink.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/html/forms/color_chooser.h" #include "third_party/blink/renderer/core/html/forms/color_chooser.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_receiver.h"
#include "third_party/blink/renderer/platform/text/platform_locale.h" #include "third_party/blink/renderer/platform/text/platform_locale.h"
namespace blink { namespace blink {
...@@ -45,7 +45,6 @@ class CORE_EXPORT ColorChooserUIController ...@@ -45,7 +45,6 @@ class CORE_EXPORT ColorChooserUIController
public mojom::blink::ColorChooserClient, public mojom::blink::ColorChooserClient,
public ColorChooser { public ColorChooser {
USING_GARBAGE_COLLECTED_MIXIN(ColorChooserUIController); USING_GARBAGE_COLLECTED_MIXIN(ColorChooserUIController);
USING_PRE_FINALIZER(ColorChooserUIController, Dispose);
public: public:
ColorChooserUIController(LocalFrame*, blink::ColorChooserClient*); ColorChooserUIController(LocalFrame*, blink::ColorChooserClient*);
...@@ -73,7 +72,7 @@ class CORE_EXPORT ColorChooserUIController ...@@ -73,7 +72,7 @@ class CORE_EXPORT ColorChooserUIController
private: private:
mojo::Remote<mojom::blink::ColorChooserFactory> color_chooser_factory_; mojo::Remote<mojom::blink::ColorChooserFactory> color_chooser_factory_;
mojo::Receiver<mojom::blink::ColorChooserClient> receiver_{this}; HeapMojoReceiver<mojom::blink::ColorChooserClient> 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