refactor: api web contents ownership (#38695)
* refactor: aggregate api::WebContents::exclusive_access_manager_ directly * refactor: make WebContents::devtools_file_system_indexer_ scoped_refptr const * refactor: make WebContents::file_task_runner_ scoped_refptr const * refactor: make WebContents::print_task_runner_ scoped_refptr const
This commit is contained in:
parent
c0d9764de9
commit
a3448376a1
2 changed files with 22 additions and 33 deletions
|
@ -783,12 +783,7 @@ WebContents::WebContents(v8::Isolate* isolate,
|
||||||
content::WebContents* web_contents)
|
content::WebContents* web_contents)
|
||||||
: content::WebContentsObserver(web_contents),
|
: content::WebContentsObserver(web_contents),
|
||||||
type_(Type::kRemote),
|
type_(Type::kRemote),
|
||||||
id_(GetAllWebContents().Add(this)),
|
id_(GetAllWebContents().Add(this))
|
||||||
devtools_file_system_indexer_(
|
|
||||||
base::MakeRefCounted<DevToolsFileSystemIndexer>()),
|
|
||||||
exclusive_access_manager_(std::make_unique<ExclusiveAccessManager>(this)),
|
|
||||||
file_task_runner_(
|
|
||||||
base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()}))
|
|
||||||
#if BUILDFLAG(ENABLE_PRINTING)
|
#if BUILDFLAG(ENABLE_PRINTING)
|
||||||
,
|
,
|
||||||
print_task_runner_(CreatePrinterHandlerTaskRunner())
|
print_task_runner_(CreatePrinterHandlerTaskRunner())
|
||||||
|
@ -821,12 +816,7 @@ WebContents::WebContents(v8::Isolate* isolate,
|
||||||
Type type)
|
Type type)
|
||||||
: content::WebContentsObserver(web_contents.get()),
|
: content::WebContentsObserver(web_contents.get()),
|
||||||
type_(type),
|
type_(type),
|
||||||
id_(GetAllWebContents().Add(this)),
|
id_(GetAllWebContents().Add(this))
|
||||||
devtools_file_system_indexer_(
|
|
||||||
base::MakeRefCounted<DevToolsFileSystemIndexer>()),
|
|
||||||
exclusive_access_manager_(std::make_unique<ExclusiveAccessManager>(this)),
|
|
||||||
file_task_runner_(
|
|
||||||
base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()}))
|
|
||||||
#if BUILDFLAG(ENABLE_PRINTING)
|
#if BUILDFLAG(ENABLE_PRINTING)
|
||||||
,
|
,
|
||||||
print_task_runner_(CreatePrinterHandlerTaskRunner())
|
print_task_runner_(CreatePrinterHandlerTaskRunner())
|
||||||
|
@ -842,12 +832,7 @@ WebContents::WebContents(v8::Isolate* isolate,
|
||||||
|
|
||||||
WebContents::WebContents(v8::Isolate* isolate,
|
WebContents::WebContents(v8::Isolate* isolate,
|
||||||
const gin_helper::Dictionary& options)
|
const gin_helper::Dictionary& options)
|
||||||
: id_(GetAllWebContents().Add(this)),
|
: id_(GetAllWebContents().Add(this))
|
||||||
devtools_file_system_indexer_(
|
|
||||||
base::MakeRefCounted<DevToolsFileSystemIndexer>()),
|
|
||||||
exclusive_access_manager_(std::make_unique<ExclusiveAccessManager>(this)),
|
|
||||||
file_task_runner_(
|
|
||||||
base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()}))
|
|
||||||
#if BUILDFLAG(ENABLE_PRINTING)
|
#if BUILDFLAG(ENABLE_PRINTING)
|
||||||
,
|
,
|
||||||
print_task_runner_(CreatePrinterHandlerTaskRunner())
|
print_task_runner_(CreatePrinterHandlerTaskRunner())
|
||||||
|
@ -1409,7 +1394,7 @@ bool WebContents::PlatformHandleKeyboardEvent(
|
||||||
content::KeyboardEventProcessingResult WebContents::PreHandleKeyboardEvent(
|
content::KeyboardEventProcessingResult WebContents::PreHandleKeyboardEvent(
|
||||||
content::WebContents* source,
|
content::WebContents* source,
|
||||||
const content::NativeWebKeyboardEvent& event) {
|
const content::NativeWebKeyboardEvent& event) {
|
||||||
if (exclusive_access_manager_->HandleUserKeyEvent(event))
|
if (exclusive_access_manager_.HandleUserKeyEvent(event))
|
||||||
return content::KeyboardEventProcessingResult::HANDLED;
|
return content::KeyboardEventProcessingResult::HANDLED;
|
||||||
|
|
||||||
if (event.GetType() == blink::WebInputEvent::Type::kRawKeyDown ||
|
if (event.GetType() == blink::WebInputEvent::Type::kRawKeyDown ||
|
||||||
|
@ -1497,7 +1482,7 @@ void WebContents::OnEnterFullscreenModeForTab(
|
||||||
|
|
||||||
owner_window()->set_fullscreen_transition_type(
|
owner_window()->set_fullscreen_transition_type(
|
||||||
NativeWindow::FullScreenTransitionType::kHTML);
|
NativeWindow::FullScreenTransitionType::kHTML);
|
||||||
exclusive_access_manager_->fullscreen_controller()->EnterFullscreenModeForTab(
|
exclusive_access_manager_.fullscreen_controller()->EnterFullscreenModeForTab(
|
||||||
requesting_frame, options.display_id);
|
requesting_frame, options.display_id);
|
||||||
|
|
||||||
SetHtmlApiFullscreen(true);
|
SetHtmlApiFullscreen(true);
|
||||||
|
@ -1515,7 +1500,7 @@ void WebContents::ExitFullscreenModeForTab(content::WebContents* source) {
|
||||||
|
|
||||||
// This needs to be called before we exit fullscreen on the native window,
|
// This needs to be called before we exit fullscreen on the native window,
|
||||||
// or the controller will incorrectly think we weren't fullscreen and bail.
|
// or the controller will incorrectly think we weren't fullscreen and bail.
|
||||||
exclusive_access_manager_->fullscreen_controller()->ExitFullscreenModeForTab(
|
exclusive_access_manager_.fullscreen_controller()->ExitFullscreenModeForTab(
|
||||||
source);
|
source);
|
||||||
|
|
||||||
SetHtmlApiFullscreen(false);
|
SetHtmlApiFullscreen(false);
|
||||||
|
@ -1574,7 +1559,7 @@ void WebContents::RequestExclusivePointerAccess(
|
||||||
bool last_unlocked_by_target,
|
bool last_unlocked_by_target,
|
||||||
bool allowed) {
|
bool allowed) {
|
||||||
if (allowed) {
|
if (allowed) {
|
||||||
exclusive_access_manager_->mouse_lock_controller()->RequestToLockMouse(
|
exclusive_access_manager_.mouse_lock_controller()->RequestToLockMouse(
|
||||||
web_contents, user_gesture, last_unlocked_by_target);
|
web_contents, user_gesture, last_unlocked_by_target);
|
||||||
} else {
|
} else {
|
||||||
web_contents->GotResponseToLockMouseRequest(
|
web_contents->GotResponseToLockMouseRequest(
|
||||||
|
@ -1594,18 +1579,18 @@ void WebContents::RequestToLockMouse(content::WebContents* web_contents,
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebContents::LostMouseLock() {
|
void WebContents::LostMouseLock() {
|
||||||
exclusive_access_manager_->mouse_lock_controller()->LostMouseLock();
|
exclusive_access_manager_.mouse_lock_controller()->LostMouseLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebContents::RequestKeyboardLock(content::WebContents* web_contents,
|
void WebContents::RequestKeyboardLock(content::WebContents* web_contents,
|
||||||
bool esc_key_locked) {
|
bool esc_key_locked) {
|
||||||
exclusive_access_manager_->keyboard_lock_controller()->RequestKeyboardLock(
|
exclusive_access_manager_.keyboard_lock_controller()->RequestKeyboardLock(
|
||||||
web_contents, esc_key_locked);
|
web_contents, esc_key_locked);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebContents::CancelKeyboardLockRequest(
|
void WebContents::CancelKeyboardLockRequest(
|
||||||
content::WebContents* web_contents) {
|
content::WebContents* web_contents) {
|
||||||
exclusive_access_manager_->keyboard_lock_controller()
|
exclusive_access_manager_.keyboard_lock_controller()
|
||||||
->CancelKeyboardLockRequest(web_contents);
|
->CancelKeyboardLockRequest(web_contents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3875,8 +3860,10 @@ bool WebContents::IsFullscreenForTabOrPending(
|
||||||
|
|
||||||
content::FullscreenState WebContents::GetFullscreenState(
|
content::FullscreenState WebContents::GetFullscreenState(
|
||||||
const content::WebContents* source) const {
|
const content::WebContents* source) const {
|
||||||
return exclusive_access_manager_->fullscreen_controller()->GetFullscreenState(
|
// `const_cast` here because EAM does not have const getters
|
||||||
source);
|
return const_cast<ExclusiveAccessManager*>(&exclusive_access_manager_)
|
||||||
|
->fullscreen_controller()
|
||||||
|
->GetFullscreenState(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WebContents::TakeFocus(content::WebContents* source, bool reverse) {
|
bool WebContents::TakeFocus(content::WebContents* source, bool reverse) {
|
||||||
|
|
|
@ -16,9 +16,11 @@
|
||||||
#include "base/memory/weak_ptr.h"
|
#include "base/memory/weak_ptr.h"
|
||||||
#include "base/observer_list.h"
|
#include "base/observer_list.h"
|
||||||
#include "base/observer_list_types.h"
|
#include "base/observer_list_types.h"
|
||||||
|
#include "base/task/thread_pool.h"
|
||||||
#include "chrome/browser/devtools/devtools_eye_dropper.h"
|
#include "chrome/browser/devtools/devtools_eye_dropper.h"
|
||||||
#include "chrome/browser/devtools/devtools_file_system_indexer.h"
|
#include "chrome/browser/devtools/devtools_file_system_indexer.h"
|
||||||
#include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" // nogncheck
|
#include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" // nogncheck
|
||||||
|
#include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h"
|
||||||
#include "content/common/frame.mojom.h"
|
#include "content/common/frame.mojom.h"
|
||||||
#include "content/public/browser/devtools_agent_host.h"
|
#include "content/public/browser/devtools_agent_host.h"
|
||||||
#include "content/public/browser/keyboard_event_processing_result.h"
|
#include "content/public/browser/keyboard_event_processing_result.h"
|
||||||
|
@ -77,8 +79,6 @@ namespace gin {
|
||||||
class Arguments;
|
class Arguments;
|
||||||
}
|
}
|
||||||
|
|
||||||
class ExclusiveAccessManager;
|
|
||||||
|
|
||||||
class SkRegion;
|
class SkRegion;
|
||||||
|
|
||||||
namespace electron {
|
namespace electron {
|
||||||
|
@ -803,9 +803,10 @@ class WebContents : public ExclusiveAccessContext,
|
||||||
// Whether window is fullscreened by window api.
|
// Whether window is fullscreened by window api.
|
||||||
bool native_fullscreen_ = false;
|
bool native_fullscreen_ = false;
|
||||||
|
|
||||||
scoped_refptr<DevToolsFileSystemIndexer> devtools_file_system_indexer_;
|
const scoped_refptr<DevToolsFileSystemIndexer> devtools_file_system_indexer_ =
|
||||||
|
base::MakeRefCounted<DevToolsFileSystemIndexer>();
|
||||||
|
|
||||||
std::unique_ptr<ExclusiveAccessManager> exclusive_access_manager_;
|
ExclusiveAccessManager exclusive_access_manager_{this};
|
||||||
|
|
||||||
std::unique_ptr<DevToolsEyeDropper> eye_dropper_;
|
std::unique_ptr<DevToolsEyeDropper> eye_dropper_;
|
||||||
|
|
||||||
|
@ -832,10 +833,11 @@ class WebContents : public ExclusiveAccessContext,
|
||||||
DevToolsIndexingJobsMap;
|
DevToolsIndexingJobsMap;
|
||||||
DevToolsIndexingJobsMap devtools_indexing_jobs_;
|
DevToolsIndexingJobsMap devtools_indexing_jobs_;
|
||||||
|
|
||||||
scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
|
const scoped_refptr<base::SequencedTaskRunner> file_task_runner_ =
|
||||||
|
base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()});
|
||||||
|
|
||||||
#if BUILDFLAG(ENABLE_PRINTING)
|
#if BUILDFLAG(ENABLE_PRINTING)
|
||||||
scoped_refptr<base::TaskRunner> print_task_runner_;
|
const scoped_refptr<base::TaskRunner> print_task_runner_;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Stores the frame thats currently in fullscreen, nullptr if there is none.
|
// Stores the frame thats currently in fullscreen, nullptr if there is none.
|
||||||
|
|
Loading…
Reference in a new issue