mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Add print preview support (see issue #123)
Pass the `--enable-print-preview` command-line flag to enable. Currently only supported on Windows and Linux.
This commit is contained in:
committed by
Marshall Greenblatt
parent
cf87c88b05
commit
1669c0afbd
72
libcef/browser/web_contents_dialog_helper.cc
Normal file
72
libcef/browser/web_contents_dialog_helper.cc
Normal file
@@ -0,0 +1,72 @@
|
||||
// Copyright (c) 2019 The Chromium Embedded Framework Authors. All rights
|
||||
// reserved. Use of this source code is governed by a BSD-style license that
|
||||
// can be found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/web_contents_dialog_helper.h"
|
||||
|
||||
#include "libcef/browser/browser_platform_delegate.h"
|
||||
|
||||
#include "chrome/browser/platform_util.h"
|
||||
#include "components/web_modal/web_contents_modal_dialog_manager.h"
|
||||
|
||||
#if defined(USE_AURA)
|
||||
#include "ui/views/widget/widget.h"
|
||||
#endif
|
||||
|
||||
CefWebContentsDialogHelper::CefWebContentsDialogHelper(
|
||||
content::WebContents* web_contents,
|
||||
CefBrowserPlatformDelegate* browser_delegate)
|
||||
: browser_delegate_(browser_delegate), weak_factory_(this) {
|
||||
web_modal::WebContentsModalDialogManager::CreateForWebContents(web_contents);
|
||||
web_modal::WebContentsModalDialogManager::FromWebContents(web_contents)
|
||||
->SetDelegate(this);
|
||||
}
|
||||
|
||||
base::RepeatingClosure CefWebContentsDialogHelper::GetBoundsChangedCallback() {
|
||||
return base::BindRepeating(&CefWebContentsDialogHelper::OnBoundsChanged,
|
||||
weak_factory_.GetWeakPtr());
|
||||
}
|
||||
|
||||
bool CefWebContentsDialogHelper::IsWebContentsVisible(
|
||||
content::WebContents* web_contents) {
|
||||
return platform_util::IsVisible(web_contents->GetNativeView());
|
||||
}
|
||||
|
||||
web_modal::WebContentsModalDialogHost*
|
||||
CefWebContentsDialogHelper::GetWebContentsModalDialogHost() {
|
||||
return this;
|
||||
}
|
||||
|
||||
gfx::NativeView CefWebContentsDialogHelper::GetHostView() const {
|
||||
#if defined(USE_AURA)
|
||||
return browser_delegate_->GetWindowWidget()->GetNativeView();
|
||||
#else
|
||||
NOTIMPLEMENTED();
|
||||
return gfx::NativeView();
|
||||
#endif
|
||||
}
|
||||
|
||||
gfx::Point CefWebContentsDialogHelper::GetDialogPosition(
|
||||
const gfx::Size& size) {
|
||||
return browser_delegate_->GetDialogPosition(size);
|
||||
}
|
||||
|
||||
gfx::Size CefWebContentsDialogHelper::GetMaximumDialogSize() {
|
||||
return browser_delegate_->GetMaximumDialogSize();
|
||||
}
|
||||
|
||||
void CefWebContentsDialogHelper::AddObserver(
|
||||
web_modal::ModalDialogHostObserver* observer) {
|
||||
if (observer && !observer_list_.HasObserver(observer))
|
||||
observer_list_.AddObserver(observer);
|
||||
}
|
||||
|
||||
void CefWebContentsDialogHelper::RemoveObserver(
|
||||
web_modal::ModalDialogHostObserver* observer) {
|
||||
observer_list_.RemoveObserver(observer);
|
||||
}
|
||||
|
||||
void CefWebContentsDialogHelper::OnBoundsChanged() {
|
||||
for (auto& observer : observer_list_)
|
||||
observer.OnPositionRequiresUpdate();
|
||||
}
|
Reference in New Issue
Block a user