refactor: remove content::WebContentsObserver from Event (#19251)
This commit is contained in:
parent
c71cdce0b7
commit
c76b0b70c1
3 changed files with 6 additions and 43 deletions
|
@ -6,10 +6,7 @@
|
||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "content/public/browser/render_frame_host.h"
|
|
||||||
#include "content/public/browser/web_contents.h"
|
|
||||||
#include "native_mate/object_template_builder.h"
|
#include "native_mate/object_template_builder.h"
|
||||||
#include "shell/common/native_mate_converters/string16_converter.h"
|
|
||||||
#include "shell/common/native_mate_converters/value_converter.h"
|
#include "shell/common/native_mate_converters/value_converter.h"
|
||||||
|
|
||||||
namespace mate {
|
namespace mate {
|
||||||
|
@ -20,34 +17,9 @@ Event::Event(v8::Isolate* isolate) {
|
||||||
|
|
||||||
Event::~Event() {}
|
Event::~Event() {}
|
||||||
|
|
||||||
void Event::SetSenderAndMessage(content::RenderFrameHost* sender,
|
void Event::SetCallback(base::Optional<MessageSyncCallback> callback) {
|
||||||
base::Optional<MessageSyncCallback> callback) {
|
|
||||||
DCHECK(!sender_);
|
|
||||||
DCHECK(!callback_);
|
DCHECK(!callback_);
|
||||||
sender_ = sender;
|
|
||||||
callback_ = std::move(callback);
|
callback_ = std::move(callback);
|
||||||
|
|
||||||
Observe(content::WebContents::FromRenderFrameHost(sender));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Event::RenderFrameDeleted(content::RenderFrameHost* rfh) {
|
|
||||||
if (sender_ != rfh)
|
|
||||||
return;
|
|
||||||
sender_ = nullptr;
|
|
||||||
callback_.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Event::RenderFrameHostChanged(content::RenderFrameHost* old_rfh,
|
|
||||||
content::RenderFrameHost* new_rfh) {
|
|
||||||
if (sender_ && sender_ == old_rfh)
|
|
||||||
sender_ = new_rfh;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Event::FrameDeleted(content::RenderFrameHost* rfh) {
|
|
||||||
if (sender_ != rfh)
|
|
||||||
return;
|
|
||||||
sender_ = nullptr;
|
|
||||||
callback_.reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Event::PreventDefault(v8::Isolate* isolate) {
|
void Event::PreventDefault(v8::Isolate* isolate) {
|
||||||
|
@ -58,7 +30,7 @@ void Event::PreventDefault(v8::Isolate* isolate) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Event::SendReply(const base::Value& result) {
|
bool Event::SendReply(const base::Value& result) {
|
||||||
if (!callback_ || sender_ == nullptr)
|
if (!callback_)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
std::move(*callback_).Run(result.Clone());
|
std::move(*callback_).Run(result.Clone());
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
#define SHELL_BROWSER_API_EVENT_H_
|
#define SHELL_BROWSER_API_EVENT_H_
|
||||||
|
|
||||||
#include "base/optional.h"
|
#include "base/optional.h"
|
||||||
#include "content/public/browser/web_contents_observer.h"
|
|
||||||
#include "electron/shell/common/api/api.mojom.h"
|
#include "electron/shell/common/api/api.mojom.h"
|
||||||
#include "native_mate/handle.h"
|
#include "native_mate/handle.h"
|
||||||
#include "native_mate/wrappable.h"
|
#include "native_mate/wrappable.h"
|
||||||
|
@ -17,7 +16,7 @@ class Message;
|
||||||
|
|
||||||
namespace mate {
|
namespace mate {
|
||||||
|
|
||||||
class Event : public Wrappable<Event>, public content::WebContentsObserver {
|
class Event : public Wrappable<Event> {
|
||||||
public:
|
public:
|
||||||
using MessageSyncCallback =
|
using MessageSyncCallback =
|
||||||
electron::mojom::ElectronBrowser::MessageSyncCallback;
|
electron::mojom::ElectronBrowser::MessageSyncCallback;
|
||||||
|
@ -26,9 +25,8 @@ class Event : public Wrappable<Event>, public content::WebContentsObserver {
|
||||||
static void BuildPrototype(v8::Isolate* isolate,
|
static void BuildPrototype(v8::Isolate* isolate,
|
||||||
v8::Local<v8::FunctionTemplate> prototype);
|
v8::Local<v8::FunctionTemplate> prototype);
|
||||||
|
|
||||||
// Pass the sender and message to be replied.
|
// Pass the callback to be invoked.
|
||||||
void SetSenderAndMessage(content::RenderFrameHost* sender,
|
void SetCallback(base::Optional<MessageSyncCallback> callback);
|
||||||
base::Optional<MessageSyncCallback> callback);
|
|
||||||
|
|
||||||
// event.PreventDefault().
|
// event.PreventDefault().
|
||||||
void PreventDefault(v8::Isolate* isolate);
|
void PreventDefault(v8::Isolate* isolate);
|
||||||
|
@ -41,15 +39,8 @@ class Event : public Wrappable<Event>, public content::WebContentsObserver {
|
||||||
explicit Event(v8::Isolate* isolate);
|
explicit Event(v8::Isolate* isolate);
|
||||||
~Event() override;
|
~Event() override;
|
||||||
|
|
||||||
// content::WebContentsObserver implementations:
|
|
||||||
void RenderFrameDeleted(content::RenderFrameHost* rfh) override;
|
|
||||||
void RenderFrameHostChanged(content::RenderFrameHost* old_rfh,
|
|
||||||
content::RenderFrameHost* new_rfh) override;
|
|
||||||
void FrameDeleted(content::RenderFrameHost* rfh) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Replyer for the synchronous messages.
|
// Replyer for the synchronous messages.
|
||||||
content::RenderFrameHost* sender_ = nullptr;
|
|
||||||
base::Optional<MessageSyncCallback> callback_;
|
base::Optional<MessageSyncCallback> callback_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(Event);
|
DISALLOW_COPY_AND_ASSIGN(Event);
|
||||||
|
|
|
@ -55,7 +55,7 @@ v8::Local<v8::Object> CreateJSEvent(
|
||||||
|
|
||||||
if (use_native_event) {
|
if (use_native_event) {
|
||||||
mate::Handle<mate::Event> native_event = mate::Event::Create(isolate);
|
mate::Handle<mate::Event> native_event = mate::Event::Create(isolate);
|
||||||
native_event->SetSenderAndMessage(sender, std::move(callback));
|
native_event->SetCallback(std::move(callback));
|
||||||
event = v8::Local<v8::Object>::Cast(native_event.ToV8());
|
event = v8::Local<v8::Object>::Cast(native_event.ToV8());
|
||||||
} else {
|
} else {
|
||||||
event = CreateEventObject(isolate);
|
event = CreateEventObject(isolate);
|
||||||
|
|
Loading…
Reference in a new issue