| // 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 |