| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "content/shell/browser/shell_platform_delegate.h" |
| |
| #include "base/containers/contains.h" |
| #include "content/public/browser/render_widget_host_view.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/shell/browser/shell.h" |
| #include "content/shell/browser/shell_platform_data_aura.h" |
| #include "ui/aura/env.h" |
| #include "ui/aura/window.h" |
| #include "ui/aura/window_event_dispatcher.h" |
| |
| namespace content { |
| |
| struct ShellPlatformDelegate::ShellData { |
| gfx::NativeWindow window; |
| }; |
| |
| struct ShellPlatformDelegate::PlatformData { |
| std::unique_ptr<ShellPlatformDataAura> aura; |
| }; |
| |
| ShellPlatformDelegate::ShellPlatformDelegate() = default; |
| ShellPlatformDelegate::~ShellPlatformDelegate() = default; |
| |
| ShellPlatformDataAura* ShellPlatformDelegate::GetShellPlatformDataAura() { |
| return platform_->aura.get(); |
| } |
| |
| void ShellPlatformDelegate::Initialize(const gfx::Size& default_window_size) { |
| platform_ = std::make_unique<PlatformData>(); |
| platform_->aura = |
| std::make_unique<ShellPlatformDataAura>(default_window_size); |
| } |
| |
| void ShellPlatformDelegate::CreatePlatformWindow( |
| Shell* shell, |
| const gfx::Size& initial_size) { |
| DCHECK(!base::Contains(shell_data_map_, shell)); |
| ShellData& shell_data = shell_data_map_[shell]; |
| |
| platform_->aura->ResizeWindow(initial_size); |
| |
| shell_data.window = platform_->aura->host()->window(); |
| } |
| |
| gfx::NativeWindow ShellPlatformDelegate::GetNativeWindow(Shell* shell) { |
| DCHECK(base::Contains(shell_data_map_, shell)); |
| ShellData& shell_data = shell_data_map_[shell]; |
| return shell_data.window; |
| } |
| |
| void ShellPlatformDelegate::CleanUp(Shell* shell) { |
| DCHECK(base::Contains(shell_data_map_, shell)); |
| shell_data_map_.erase(shell); |
| } |
| |
| void ShellPlatformDelegate::SetContents(Shell* shell) { |
| aura::Window* content = shell->web_contents()->GetNativeView(); |
| aura::Window* parent = platform_->aura->host()->window(); |
| if (!parent->Contains(content)) |
| parent->AddChild(content); |
| |
| content->Show(); |
| } |
| |
| void ShellPlatformDelegate::ResizeWebContent(Shell* shell, |
| const gfx::Size& content_size) { |
| shell->web_contents()->GetRenderWidgetHostView()->SetSize(content_size); |
| } |
| |
| void ShellPlatformDelegate::EnableUIControl(Shell* shell, |
| UIControl control, |
| bool is_enabled) {} |
| |
| void ShellPlatformDelegate::SetAddressBarURL(Shell* shell, const GURL& url) {} |
| |
| void ShellPlatformDelegate::SetIsLoading(Shell* shell, bool loading) {} |
| |
| void ShellPlatformDelegate::SetTitle(Shell* shell, |
| const std::u16string& title) {} |
| |
| void ShellPlatformDelegate::MainFrameCreated(Shell* shell) {} |
| |
| bool ShellPlatformDelegate::DestroyShell(Shell* shell) { |
| return false; // Shell destroys itself. |
| } |
| |
| } // namespace content |