mirror of
https://github.com/electron/electron.git
synced 2026-01-09 07:28:12 -05:00
* chore: bump chromium in DEPS to 144.0.7543.0 * Pass PipScreenCaptureCoordinatorProxy to ScreenCaptureKitDeviceMac https://chromium-review.googlesource.com/c/chromium/src/+/7157590 * chore: update patches * chore: update filenames.libcxx.gni * 7142359: Spanification of process_singleton_posix.cc https: //chromium-review.googlesource.com/c/chromium/src/+/7142359 Co-Authored-By: Charles Kerr <70381+ckerr@users.noreply.github.com> * Move logging::LoggingSettings to base/logging/logging_settings.h https://chromium-review.googlesource.com/c/chromium/src/+/7173024 * chore: bump chromium in DEPS to 144.0.7545.0 * 7159368: update PluginService API for sync GetPlugins Upstream removed async PluginService APIs: - GetPluginsAsync() removed, use synchronous GetPlugins() - RegisterInternalPlugin() now takes single argument (remove add_at_beginning) - RefreshPlugins() removed entirely Updated ElectronPluginInfoHostImpl to use synchronous plugin loading and simplified ElectronBrowserMainParts internal plugin registration. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7159368 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7159328 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7159056 (cherry picked from commit88cdf50b0a) * 7159184: add missing base/files/file_path.h include Add explicit include for base/files/file_path.h in electron_browser_context.h. After removal of superfluous Mojo includes from content headers, base::FilePath is no longer transitively included via content/public/browser/browser_context.h. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7159184 (cherry picked from commit6ca8ea03ec) * 7126479: add ShouldForceRefreshTextCheckService parameter to SpellCheckClient Upstream added a force-refresh parameter to WebTextCheckClient::RequestCheckingOfText to bypass spell check cache. Add the new ShouldForceRefreshTextCheckService parameter to SpellCheckClient's override (currently unused in Electron). Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7126479 (cherry picked from commit879c0401c4) * 7083663: remove fingerprinting_protection_ruleset_service override Upstream deleted external references to Fingerprinting Protection Filter (FPF) component. Remove the fingerprinting_protection_ruleset_service() override from BrowserProcessImpl as the method no longer exists in the base class. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7083663 (cherry picked from commit8350d152f9) * 7155287: implement WebContentsView::GetSize and Resize Upstream delegated WebContents::GetSize() and Resize() to WebContentsView, making them pure virtual. Add const qualifier to GetSize() and implement the Resize() override in OffScreenWebContentsView (no-op for offscreen). Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7155287 (cherry picked from commit084eaa568e) * 7184238: add OnUnconfirmedTapConvertedToTap override Upstream added OnUnconfirmedTapConvertedToTap as a pure virtual method to RenderWidgetHostViewBase to inform root view when child frame converts an unconfirmed tap. Add empty override for offscreen rendering. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7184238 (cherry picked from commitef03400d9a) * 7143586: add widget parameter to OnCommandsChanged GlobalAcceleratorListener::OnCommandsChanged gained a gfx::AcceleratedWidget parameter for window association in the GlobalShortcutListenerLinux implementation. Pass gfx::kNullAcceleratedWidget for Electron's usage. Ref: : Pass parent handle to GlobalAcceleratorListenerLinux::BindShortcuts | https://chromium-review.googlesource.com/c/chromium/src/+/7143586 (cherry picked from commit38306e2bfc) Co-Authored-By: Samuel Attard <MarshallOfSound@users.noreply.github.com> * chore: update patches Co-Authored-By: Samuel Attard <MarshallOfSound@users.noreply.github.com> * chore: bump chromium in DEPS to 144.0.7547.0 * chore: update patches * 7189232: Add support for UnownedUserData in GlobalFeatures https: //chromium-review.googlesource.com/c/chromium/src/+/7189232 * Refactor: Use std::u16string for extension load error messages https://chromium-review.googlesource.com/c/chromium/src/+/7185844 * fixup Add support for UnownedUserData in GlobalFeatures * 7165650: Remove ResourceContext https://chromium-review.googlesource.com/c/chromium/src/+/7165650 * fixup BUILD.gn for lint * 7202164: Reland "Reland "Remove GenericScopedHandle:IsValid"" https://chromium-review.googlesource.com/c/chromium/src/+/7202164 * advance deprecation of v8::ReturnValue<void>::Set(Local<S>). 7168624: [runtime][api] Relax requirements for setter/definer/deleter callbacks | https://chromium-review.googlesource.com/c/v8/v8/+/7168624 * fixup advance deprecation of v8::ReturnValue<void>::Set(Local<S>) * chore: skip setting LPAC ACLs * Revert "chore: skip setting LPAC ACLs" This reverts commite187aec488. * chore: revert Convert to UNSAFE_TODO in sandbox revert https://chromium-review.googlesource.com/c/chromium/src/+/7131661 to see if it fixes the Windows sandbox issue. * Revert "chore: revert Convert to UNSAFE_TODO in sandbox" This reverts commit57afbfefe5. * chore: Revert "Enable network sandbox by default on Windows" see if this fixes the Windows sandbox issue * Enable network sandbox by default on Windows https://chromium-review.googlesource.com/c/chromium/src/+/7204292 * Revert "chore: Revert "Enable network sandbox by default on Windows"" This reverts commit530ab6af82. * fixup! Enable network sandbox by default on Windows | https://chromium-review.googlesource.com/c/chromium/src/+/7204292 * fixup!: Correct flag name, add kLocalNetworkAccessChecks to all platforms --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <70381+ckerr@users.noreply.github.com> Co-authored-by: Samuel Attard <sattard@anthropic.com> Co-authored-by: Samuel Attard <MarshallOfSound@users.noreply.github.com> Co-authored-by: John Kleinschmidt <kleinschmidtorama@gmail.com> Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
208 lines
5.9 KiB
C++
208 lines
5.9 KiB
C++
// Copyright (c) 2016 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/browser/osr/osr_web_contents_view.h"
|
|
|
|
#include "content/browser/web_contents/web_contents_impl.h" // nogncheck
|
|
#include "content/public/browser/render_view_host.h"
|
|
#include "content/public/browser/web_contents.h"
|
|
#include "shell/browser/native_window.h"
|
|
#include "ui/display/screen.h"
|
|
#include "ui/display/screen_info.h"
|
|
|
|
namespace electron {
|
|
|
|
OffScreenWebContentsView::OffScreenWebContentsView(
|
|
bool transparent,
|
|
bool offscreen_use_shared_texture,
|
|
const std::string& offscreen_shared_texture_pixel_format,
|
|
const OnPaintCallback& callback)
|
|
: transparent_(transparent),
|
|
offscreen_use_shared_texture_(offscreen_use_shared_texture),
|
|
offscreen_shared_texture_pixel_format_(
|
|
offscreen_shared_texture_pixel_format),
|
|
callback_(callback) {
|
|
#if BUILDFLAG(IS_MAC)
|
|
PlatformCreate();
|
|
#endif
|
|
}
|
|
|
|
OffScreenWebContentsView::~OffScreenWebContentsView() {
|
|
if (native_window_)
|
|
native_window_->RemoveObserver(this);
|
|
|
|
#if BUILDFLAG(IS_MAC)
|
|
PlatformDestroy();
|
|
#endif
|
|
}
|
|
|
|
void OffScreenWebContentsView::SetWebContents(
|
|
content::WebContents* web_contents) {
|
|
web_contents_ = web_contents;
|
|
|
|
if (auto* view = GetView())
|
|
view->InstallTransparency();
|
|
}
|
|
|
|
void OffScreenWebContentsView::SetNativeWindow(NativeWindow* window) {
|
|
if (native_window_)
|
|
native_window_->RemoveObserver(this);
|
|
|
|
native_window_ = window;
|
|
|
|
if (native_window_)
|
|
native_window_->AddObserver(this);
|
|
|
|
OnWindowResize();
|
|
}
|
|
|
|
void OffScreenWebContentsView::OnWindowResize() {
|
|
// In offscreen mode call RenderWidgetHostView's SetSize explicitly
|
|
if (auto* view = GetView())
|
|
view->SetSize(GetSize());
|
|
}
|
|
|
|
void OffScreenWebContentsView::OnWindowClosed() {
|
|
if (native_window_) {
|
|
native_window_->RemoveObserver(this);
|
|
native_window_ = nullptr;
|
|
}
|
|
}
|
|
|
|
gfx::Size OffScreenWebContentsView::GetSize() const {
|
|
return native_window_ ? native_window_->GetSize() : gfx::Size();
|
|
}
|
|
|
|
#if !BUILDFLAG(IS_MAC)
|
|
gfx::NativeView OffScreenWebContentsView::GetNativeView() const {
|
|
if (!native_window_)
|
|
return {};
|
|
return native_window_->GetNativeView();
|
|
}
|
|
|
|
gfx::NativeView OffScreenWebContentsView::GetContentNativeView() const {
|
|
if (!native_window_)
|
|
return {};
|
|
return native_window_->GetNativeView();
|
|
}
|
|
|
|
gfx::NativeWindow OffScreenWebContentsView::GetTopLevelNativeWindow() const {
|
|
if (!native_window_)
|
|
return {};
|
|
return native_window_->GetNativeWindow();
|
|
}
|
|
#endif
|
|
|
|
gfx::Rect OffScreenWebContentsView::GetContainerBounds() const {
|
|
return GetViewBounds();
|
|
}
|
|
|
|
content::DropData* OffScreenWebContentsView::GetDropData() const {
|
|
return nullptr;
|
|
}
|
|
|
|
gfx::Rect OffScreenWebContentsView::GetViewBounds() const {
|
|
if (auto* view = GetView())
|
|
return view->GetViewBounds();
|
|
return {};
|
|
}
|
|
|
|
content::RenderWidgetHostViewBase*
|
|
OffScreenWebContentsView::CreateViewForWidget(
|
|
content::RenderWidgetHost* render_widget_host) {
|
|
if (auto* rwhv = render_widget_host->GetView())
|
|
return static_cast<content::RenderWidgetHostViewBase*>(rwhv);
|
|
|
|
return new OffScreenRenderWidgetHostView(
|
|
transparent_, offscreen_use_shared_texture_,
|
|
offscreen_shared_texture_pixel_format_, painting_, GetFrameRate(),
|
|
callback_, render_widget_host, nullptr, GetSize());
|
|
}
|
|
|
|
content::RenderWidgetHostViewBase*
|
|
OffScreenWebContentsView::CreateViewForChildWidget(
|
|
content::RenderWidgetHost* render_widget_host) {
|
|
auto* web_contents_impl =
|
|
static_cast<content::WebContentsImpl*>(web_contents_);
|
|
|
|
OffScreenRenderWidgetHostView* embedder_host_view = nullptr;
|
|
if (web_contents_impl->GetOuterWebContents()) {
|
|
embedder_host_view = static_cast<OffScreenRenderWidgetHostView*>(
|
|
web_contents_impl->GetOuterWebContents()->GetRenderWidgetHostView());
|
|
} else {
|
|
embedder_host_view = static_cast<OffScreenRenderWidgetHostView*>(
|
|
web_contents_impl->GetRenderWidgetHostView());
|
|
}
|
|
|
|
return new OffScreenRenderWidgetHostView(
|
|
transparent_, offscreen_use_shared_texture_,
|
|
offscreen_shared_texture_pixel_format_, painting_,
|
|
embedder_host_view->frame_rate(), callback_, render_widget_host,
|
|
embedder_host_view, GetSize());
|
|
}
|
|
|
|
void OffScreenWebContentsView::RenderViewReady() {
|
|
if (auto* view = GetView())
|
|
view->InstallTransparency();
|
|
}
|
|
|
|
#if BUILDFLAG(IS_MAC)
|
|
bool OffScreenWebContentsView::CloseTabAfterEventTrackingIfNeeded() {
|
|
return false;
|
|
}
|
|
#endif // BUILDFLAG(IS_MAC)
|
|
|
|
void OffScreenWebContentsView::StartDragging(
|
|
const content::DropData& drop_data,
|
|
const url::Origin& source_origin,
|
|
blink::DragOperationsMask allowed_ops,
|
|
const gfx::ImageSkia& image,
|
|
const gfx::Vector2d& cursor_offset,
|
|
const gfx::Rect& drag_obj_rect,
|
|
const blink::mojom::DragEventSourceInfo& event_info,
|
|
content::RenderWidgetHostImpl* source_rwh) {
|
|
if (web_contents_)
|
|
static_cast<content::WebContentsImpl*>(web_contents_)
|
|
->SystemDragEnded(source_rwh);
|
|
}
|
|
|
|
void OffScreenWebContentsView::SetPainting(bool painting) {
|
|
painting_ = painting;
|
|
if (auto* view = GetView())
|
|
view->SetPainting(painting);
|
|
}
|
|
|
|
bool OffScreenWebContentsView::IsPainting() const {
|
|
if (auto* view = GetView())
|
|
return view->is_painting();
|
|
return painting_;
|
|
}
|
|
|
|
void OffScreenWebContentsView::SetFrameRate(int frame_rate) {
|
|
frame_rate_ = frame_rate;
|
|
if (auto* view = GetView())
|
|
view->SetFrameRate(frame_rate);
|
|
}
|
|
|
|
int OffScreenWebContentsView::GetFrameRate() const {
|
|
if (auto* view = GetView())
|
|
return view->frame_rate();
|
|
return frame_rate_;
|
|
}
|
|
|
|
OffScreenRenderWidgetHostView* OffScreenWebContentsView::GetView() const {
|
|
if (web_contents_) {
|
|
return static_cast<OffScreenRenderWidgetHostView*>(
|
|
web_contents_->GetRenderViewHost()->GetWidget()->GetView());
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
content::BackForwardTransitionAnimationManager*
|
|
OffScreenWebContentsView::GetBackForwardTransitionAnimationManager() {
|
|
return nullptr;
|
|
}
|
|
|
|
} // namespace electron
|