Compare commits
No commits in common. "e23264eedc546243b910dbecca0c3bb935284133" and "f8ad36e72c4fc0ed19097ecf42f028c961fea884" have entirely different histories.
e23264eedc
...
f8ad36e72c
|
@ -551,10 +551,6 @@ void AlloyBrowserHostImpl::WindowDestroyed() {
|
||||||
CEF_REQUIRE_UIT();
|
CEF_REQUIRE_UIT();
|
||||||
DCHECK(!window_destroyed_);
|
DCHECK(!window_destroyed_);
|
||||||
window_destroyed_ = true;
|
window_destroyed_ = true;
|
||||||
|
|
||||||
// Destroy objects that may reference the window.
|
|
||||||
menu_manager_.reset(nullptr);
|
|
||||||
|
|
||||||
CloseBrowser(true);
|
CloseBrowser(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -933,9 +929,8 @@ void AlloyBrowserHostImpl::PrintCrossProcessSubframe(
|
||||||
int document_cookie,
|
int document_cookie,
|
||||||
content::RenderFrameHost* subframe_host) const {
|
content::RenderFrameHost* subframe_host) const {
|
||||||
auto* client = printing::PrintCompositeClient::FromWebContents(web_contents);
|
auto* client = printing::PrintCompositeClient::FromWebContents(web_contents);
|
||||||
if (client) {
|
if (client)
|
||||||
client->PrintCrossProcessSubframe(rect, document_cookie, subframe_host);
|
client->PrintCrossProcessSubframe(rect, document_cookie, subframe_host);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
content::WebContents* AlloyBrowserHostImpl::OpenURLFromTab(
|
content::WebContents* AlloyBrowserHostImpl::OpenURLFromTab(
|
||||||
|
|
|
@ -140,8 +140,6 @@ void HandleExternalProtocolHelper(
|
||||||
const std::optional<url::Origin>& initiating_origin,
|
const std::optional<url::Origin>& initiating_origin,
|
||||||
content::WeakDocumentPtr initiator_document,
|
content::WeakDocumentPtr initiator_document,
|
||||||
const net::IsolationInfo& isolation_info) {
|
const net::IsolationInfo& isolation_info) {
|
||||||
CEF_REQUIRE_UIT();
|
|
||||||
|
|
||||||
// May return nullptr if frame has been deleted or a cross-document navigation
|
// May return nullptr if frame has been deleted or a cross-document navigation
|
||||||
// has committed in the same RenderFrameHost.
|
// has committed in the same RenderFrameHost.
|
||||||
auto initiator_rfh = initiator_document.AsRenderFrameHostIfValid();
|
auto initiator_rfh = initiator_document.AsRenderFrameHostIfValid();
|
||||||
|
|
|
@ -1116,7 +1116,7 @@ class InterceptedRequestHandlerWrapper : public InterceptedRequestHandler {
|
||||||
init_state_->browser_, init_state_->frame_,
|
init_state_->browser_, init_state_->frame_,
|
||||||
state->pending_request_.get(), allow_os_execution);
|
state->pending_request_.get(), allow_os_execution);
|
||||||
if (allow_os_execution && init_state_->unhandled_request_callback_) {
|
if (allow_os_execution && init_state_->unhandled_request_callback_) {
|
||||||
CEF_POST_TASK(TID_UI, init_state_->unhandled_request_callback_);
|
init_state_->unhandled_request_callback_.Run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -500,8 +500,8 @@ bool CefWindowImpl::AcceleratorPressed(const ui::Accelerator& accelerator) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CefWindowImpl::CanHandleAccelerators() const {
|
bool CefWindowImpl::CanHandleAccelerators() const {
|
||||||
if (delegate() && widget_ && root_view()) {
|
if (delegate() && widget_) {
|
||||||
return root_view()->CanHandleAccelerators();
|
return widget_->IsActive();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
#include "tests/cefclient/browser/base_client_handler.h"
|
#include "tests/cefclient/browser/base_client_handler.h"
|
||||||
|
|
||||||
#include "tests/cefclient/browser/main_context.h"
|
|
||||||
#include "tests/cefclient/browser/root_window_manager.h"
|
|
||||||
|
|
||||||
namespace client {
|
namespace client {
|
||||||
|
|
||||||
BaseClientHandler::BaseClientHandler() {
|
BaseClientHandler::BaseClientHandler() {
|
||||||
|
@ -52,10 +49,6 @@ void BaseClientHandler::OnAfterCreated(CefRefPtr<CefBrowser> browser) {
|
||||||
message_router_->AddHandler(message_handler, false);
|
message_router_->AddHandler(message_handler, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (track_as_other_browser_) {
|
|
||||||
MainContext::Get()->GetRootWindowManager()->OtherBrowserCreated();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseClientHandler::OnBeforeClose(CefRefPtr<CefBrowser> browser) {
|
void BaseClientHandler::OnBeforeClose(CefRefPtr<CefBrowser> browser) {
|
||||||
|
@ -70,10 +63,6 @@ void BaseClientHandler::OnBeforeClose(CefRefPtr<CefBrowser> browser) {
|
||||||
message_handler_set_.clear();
|
message_handler_set_.clear();
|
||||||
message_router_ = nullptr;
|
message_router_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (track_as_other_browser_) {
|
|
||||||
MainContext::Get()->GetRootWindowManager()->OtherBrowserClosed();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BaseClientHandler::OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
|
bool BaseClientHandler::OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
|
||||||
|
|
|
@ -103,13 +103,7 @@ class BaseClientHandler : public CefClient,
|
||||||
return resource_manager_;
|
return resource_manager_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_track_as_other_browser(bool val) { track_as_other_browser_ = val; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// True if this handler should call
|
|
||||||
// RootWindowManager::OtherBrowser[Created|Closed].
|
|
||||||
bool track_as_other_browser_ = true;
|
|
||||||
|
|
||||||
// The current number of browsers using this handler.
|
// The current number of browsers using this handler.
|
||||||
int browser_count_ = 0;
|
int browser_count_ = 0;
|
||||||
|
|
||||||
|
|
|
@ -464,10 +464,6 @@ ClientHandler::ClientHandler(Delegate* delegate,
|
||||||
startup_url_(startup_url),
|
startup_url_(startup_url),
|
||||||
delegate_(delegate),
|
delegate_(delegate),
|
||||||
console_log_file_(MainContext::Get()->GetConsoleLogPath()) {
|
console_log_file_(MainContext::Get()->GetConsoleLogPath()) {
|
||||||
// This handler is used with RootWindows that are explicitly tracked by
|
|
||||||
// RootWindowManager.
|
|
||||||
set_track_as_other_browser(false);
|
|
||||||
|
|
||||||
DCHECK(!console_log_file_.empty());
|
DCHECK(!console_log_file_.empty());
|
||||||
|
|
||||||
// Read command line settings.
|
// Read command line settings.
|
||||||
|
|
|
@ -202,31 +202,6 @@ void RootWindowManager::CloseAllWindows(bool force) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RootWindowManager::OtherBrowserCreated() {
|
|
||||||
if (!CURRENTLY_ON_MAIN_THREAD()) {
|
|
||||||
// Execute this method on the main thread.
|
|
||||||
MAIN_POST_CLOSURE(base::BindOnce(&RootWindowManager::OtherBrowserCreated,
|
|
||||||
base::Unretained(this)));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
other_browser_ct_++;
|
|
||||||
}
|
|
||||||
|
|
||||||
void RootWindowManager::OtherBrowserClosed() {
|
|
||||||
if (!CURRENTLY_ON_MAIN_THREAD()) {
|
|
||||||
// Execute this method on the main thread.
|
|
||||||
MAIN_POST_CLOSURE(base::BindOnce(&RootWindowManager::OtherBrowserClosed,
|
|
||||||
base::Unretained(this)));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DCHECK_GT(other_browser_ct_, 0);
|
|
||||||
other_browser_ct_--;
|
|
||||||
|
|
||||||
MaybeCleanup();
|
|
||||||
}
|
|
||||||
|
|
||||||
void RootWindowManager::OnRootWindowCreated(
|
void RootWindowManager::OnRootWindowCreated(
|
||||||
scoped_refptr<RootWindow> root_window) {
|
scoped_refptr<RootWindow> root_window) {
|
||||||
if (!CURRENTLY_ON_MAIN_THREAD()) {
|
if (!CURRENTLY_ON_MAIN_THREAD()) {
|
||||||
|
@ -343,7 +318,11 @@ void RootWindowManager::OnRootWindowDestroyed(RootWindow* root_window) {
|
||||||
active_root_window_ = nullptr;
|
active_root_window_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
MaybeCleanup();
|
if (terminate_when_all_windows_closed_ && root_windows_.empty()) {
|
||||||
|
// All windows have closed. Clean up on the UI thread.
|
||||||
|
CefPostTask(TID_UI, base::BindOnce(&RootWindowManager::CleanupOnUIThread,
|
||||||
|
base::Unretained(this)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RootWindowManager::OnRootWindowActivated(RootWindow* root_window) {
|
void RootWindowManager::OnRootWindowActivated(RootWindow* root_window) {
|
||||||
|
@ -356,16 +335,6 @@ void RootWindowManager::OnRootWindowActivated(RootWindow* root_window) {
|
||||||
active_root_window_ = root_window;
|
active_root_window_ = root_window;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RootWindowManager::MaybeCleanup() {
|
|
||||||
REQUIRE_MAIN_THREAD();
|
|
||||||
if (terminate_when_all_windows_closed_ && root_windows_.empty() &&
|
|
||||||
other_browser_ct_ == 0) {
|
|
||||||
// All windows and browsers have closed. Clean up on the UI thread.
|
|
||||||
CefPostTask(TID_UI, base::BindOnce(&RootWindowManager::CleanupOnUIThread,
|
|
||||||
base::Unretained(this)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RootWindowManager::CleanupOnUIThread() {
|
void RootWindowManager::CleanupOnUIThread() {
|
||||||
CEF_REQUIRE_UI_THREAD();
|
CEF_REQUIRE_UI_THREAD();
|
||||||
|
|
||||||
|
|
|
@ -62,10 +62,6 @@ class RootWindowManager : public RootWindow::Delegate {
|
||||||
return request_context_per_browser_;
|
return request_context_per_browser_;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Track other browsers that are not directly associated with a RootWindow.
|
|
||||||
void OtherBrowserCreated();
|
|
||||||
void OtherBrowserClosed();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Allow deletion via std::unique_ptr only.
|
// Allow deletion via std::unique_ptr only.
|
||||||
friend std::default_delete<RootWindowManager>;
|
friend std::default_delete<RootWindowManager>;
|
||||||
|
@ -87,7 +83,6 @@ class RootWindowManager : public RootWindow::Delegate {
|
||||||
CefRefPtr<CefRequestContext> CreateRequestContext(
|
CefRefPtr<CefRequestContext> CreateRequestContext(
|
||||||
RequestContextCallback callback);
|
RequestContextCallback callback);
|
||||||
|
|
||||||
void MaybeCleanup();
|
|
||||||
void CleanupOnUIThread();
|
void CleanupOnUIThread();
|
||||||
|
|
||||||
const bool terminate_when_all_windows_closed_;
|
const bool terminate_when_all_windows_closed_;
|
||||||
|
@ -98,9 +93,6 @@ class RootWindowManager : public RootWindow::Delegate {
|
||||||
typedef std::set<scoped_refptr<RootWindow>> RootWindowSet;
|
typedef std::set<scoped_refptr<RootWindow>> RootWindowSet;
|
||||||
RootWindowSet root_windows_;
|
RootWindowSet root_windows_;
|
||||||
|
|
||||||
// Count of other browsers. Only accessed on the main thread.
|
|
||||||
int other_browser_ct_ = 0;
|
|
||||||
|
|
||||||
// The currently active/foreground RootWindow. Only accessed on the main
|
// The currently active/foreground RootWindow. Only accessed on the main
|
||||||
// thread.
|
// thread.
|
||||||
scoped_refptr<RootWindow> active_root_window_;
|
scoped_refptr<RootWindow> active_root_window_;
|
||||||
|
|
Loading…
Reference in New Issue