Index: components/web_view/web_view_impl.cc |
diff --git a/components/web_view/web_view_impl.cc b/components/web_view/web_view_impl.cc |
deleted file mode 100644 |
index 00861b56bf37e78958a4b70dffd55c8e4c0f0cb2..0000000000000000000000000000000000000000 |
--- a/components/web_view/web_view_impl.cc |
+++ /dev/null |
@@ -1,277 +0,0 @@ |
-// Copyright 2015 The Chromium 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 "components/web_view/web_view_impl.h" |
- |
-#include <queue> |
-#include <utility> |
- |
-#include "base/bind.h" |
-#include "base/command_line.h" |
-#include "components/mus/public/cpp/scoped_window_ptr.h" |
-#include "components/mus/public/cpp/window.h" |
-#include "components/mus/public/cpp/window_tree_connection.h" |
-#include "components/web_view/client_initiated_frame_connection.h" |
-#include "components/web_view/frame.h" |
-#include "components/web_view/frame_connection.h" |
-#include "components/web_view/frame_devtools_agent.h" |
-#include "components/web_view/frame_tree.h" |
-#include "components/web_view/navigation_entry.h" |
-#include "components/web_view/pending_web_view_load.h" |
-#include "components/web_view/url_request_cloneable.h" |
-#include "mojo/converters/geometry/geometry_type_converters.h" |
-#include "mojo/shell/public/cpp/shell.h" |
-#include "url/gurl.h" |
- |
-namespace web_view { |
- |
-using web_view::mojom::ButtonState; |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// WebViewImpl, public: |
- |
-WebViewImpl::WebViewImpl(mojo::Shell* shell, |
- mojom::WebViewClientPtr client, |
- mojo::InterfaceRequest<mojom::WebView> request) |
- : shell_(shell), |
- client_(std::move(client)), |
- binding_(this, std::move(request)), |
- root_(nullptr), |
- content_(nullptr), |
- find_controller_(this), |
- navigation_controller_(this) { |
- devtools_agent_.reset(new FrameDevToolsAgent(shell_, this)); |
- OnDidNavigate(); |
-} |
- |
-WebViewImpl::~WebViewImpl() { |
- if (content_) |
- content_->RemoveObserver(this); |
- if (root_) { |
- root_->RemoveObserver(this); |
- mus::ScopedWindowPtr::DeleteWindowOrWindowManager(root_); |
- } |
-} |
- |
-void WebViewImpl::OnLoad(const GURL& pending_url) { |
- // Frames are uniqued based on the id of the associated Window. By creating a |
- // new Window each time through we ensure the renderers get a clean id, rather |
- // than one they may know about and try to incorrectly use. |
- if (content_) { |
- content_->Destroy(); |
- DCHECK(!content_); |
- } |
- |
- client_->TopLevelNavigationStarted(pending_url.spec()); |
- |
- content_ = root_->connection()->NewWindow(); |
- content_->SetBounds(gfx::Rect(root_->bounds().size())); |
- root_->AddChild(content_); |
- content_->SetVisible(true); |
- content_->AddObserver(this); |
- |
- scoped_ptr<PendingWebViewLoad> pending_load(std::move(pending_load_)); |
- scoped_ptr<FrameConnection> frame_connection( |
- pending_load->frame_connection()); |
- mus::mojom::WindowTreeClientPtr window_tree_client = |
- frame_connection->GetWindowTreeClient(); |
- |
- Frame::ClientPropertyMap client_properties; |
- if (devtools_agent_) { |
- devtools_service::DevToolsAgentPtr forward_agent; |
- frame_connection->connection()->ConnectToService(&forward_agent); |
- devtools_agent_->AttachFrame(std::move(forward_agent), &client_properties); |
- } |
- |
- mojom::FrameClient* frame_client = frame_connection->frame_client(); |
- const uint32_t content_handler_id = frame_connection->GetContentHandlerID(); |
- frame_tree_.reset( |
- new FrameTree(content_handler_id, content_, std::move(window_tree_client), |
- this, frame_client, std::move(frame_connection), |
- client_properties, pending_load->navigation_start_time())); |
-} |
- |
-void WebViewImpl::PreOrderDepthFirstTraverseTree(Frame* node, |
- std::vector<Frame*>* output) { |
- output->push_back(node); |
- for (Frame* child : node->children()) |
- PreOrderDepthFirstTraverseTree(child, output); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// WebViewImpl, WebView implementation: |
- |
-void WebViewImpl::LoadRequest(mojo::URLRequestPtr request) { |
- navigation_controller_.LoadURL(std::move(request)); |
-} |
- |
-void WebViewImpl::GetWindowTreeClient( |
- mojo::InterfaceRequest<mus::mojom::WindowTreeClient> window_tree_client) { |
- mus::WindowTreeConnection::Create( |
- this, std::move(window_tree_client), |
- mus::WindowTreeConnection::CreateType::DONT_WAIT_FOR_EMBED); |
-} |
- |
-void WebViewImpl::Find(const mojo::String& search_text, |
- bool forward_direction) { |
- find_controller_.Find(search_text.To<std::string>(), forward_direction); |
-} |
- |
-void WebViewImpl::StopFinding() { |
- find_controller_.StopFinding(); |
-} |
- |
-void WebViewImpl::GoBack() { |
- if (!navigation_controller_.CanGoBack()) |
- return; |
- navigation_controller_.GoBack(); |
-} |
- |
-void WebViewImpl::GoForward() { |
- if (!navigation_controller_.CanGoForward()) |
- return; |
- navigation_controller_.GoForward(); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// WebViewImpl, mus::WindowTreeDelegate implementation: |
- |
-void WebViewImpl::OnEmbed(mus::Window* root) { |
- // We must have been granted embed root priviledges, otherwise we can't |
- // Embed() in any descendants. |
- DCHECK(root->connection()->IsEmbedRoot()); |
- root->AddObserver(this); |
- root_ = root; |
- |
- if (pending_load_ && pending_load_->is_content_handler_id_valid()) |
- OnLoad(pending_load_->pending_url()); |
-} |
- |
-void WebViewImpl::OnConnectionLost(mus::WindowTreeConnection* connection) { |
- root_ = nullptr; |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// WebViewImpl, mus::WindowObserver implementation: |
- |
-void WebViewImpl::OnWindowBoundsChanged(mus::Window* window, |
- const gfx::Rect& old_bounds, |
- const gfx::Rect& new_bounds) { |
- if (window != content_ && content_) |
- content_->SetBounds(gfx::Rect(new_bounds.size())); |
-} |
- |
-void WebViewImpl::OnWindowDestroyed(mus::Window* window) { |
- // |FrameTree| cannot outlive the content window. |
- if (window == content_) { |
- frame_tree_.reset(); |
- content_ = nullptr; |
- } |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// WebViewImpl, FrameTreeDelegate implementation: |
- |
-scoped_ptr<FrameUserData> WebViewImpl::CreateUserDataForNewFrame( |
- mojom::FrameClientPtr frame_client) { |
- return make_scoped_ptr( |
- new ClientInitiatedFrameConnection(std::move(frame_client))); |
-} |
- |
-bool WebViewImpl::CanPostMessageEventToFrame(const Frame* source, |
- const Frame* target, |
- mojom::HTMLMessageEvent* event) { |
- return true; |
-} |
- |
-void WebViewImpl::LoadingStateChanged(bool loading, double progress) { |
- client_->LoadingStateChanged(loading, progress); |
-} |
- |
-void WebViewImpl::TitleChanged(const mojo::String& title) { |
- client_->TitleChanged(title); |
-} |
- |
-void WebViewImpl::NavigateTopLevel(Frame* source, mojo::URLRequestPtr request) { |
- client_->TopLevelNavigateRequest(std::move(request)); |
-} |
- |
-void WebViewImpl::CanNavigateFrame(Frame* target, |
- mojo::URLRequestPtr request, |
- const CanNavigateFrameCallback& callback) { |
- FrameConnection::CreateConnectionForCanNavigateFrame( |
- shell_, target, std::move(request), callback); |
-} |
- |
-void WebViewImpl::DidStartNavigation(Frame* frame) {} |
- |
-void WebViewImpl::DidCommitProvisionalLoad(Frame* frame) { |
- navigation_controller_.FrameDidCommitProvisionalLoad(frame); |
-} |
- |
-void WebViewImpl::DidNavigateLocally(Frame* source, |
- const GURL& url) { |
- navigation_controller_.FrameDidNavigateLocally(source, url); |
- if (source == frame_tree_->root()) |
- client_->TopLevelNavigationStarted(url.spec()); |
-} |
- |
-void WebViewImpl::DidDestroyFrame(Frame* frame) { |
- find_controller_.DidDestroyFrame(frame); |
-} |
- |
-void WebViewImpl::OnFindInFrameCountUpdated(int32_t request_id, |
- Frame* frame, |
- int32_t count, |
- bool final_update) { |
- find_controller_.OnFindInFrameCountUpdated(request_id, frame, count, |
- final_update); |
-} |
- |
-void WebViewImpl::OnFindInPageSelectionUpdated(int32_t request_id, |
- Frame* frame, |
- int32_t active_match_ordinal) { |
- find_controller_.OnFindInPageSelectionUpdated(request_id, frame, |
- active_match_ordinal); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// WebViewImpl, FrameDevToolsAgentDelegate implementation: |
- |
-void WebViewImpl::HandlePageNavigateRequest(const GURL& url) { |
- mojo::URLRequestPtr request(mojo::URLRequest::New()); |
- request->url = url.spec(); |
- client_->TopLevelNavigateRequest(std::move(request)); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// WebViewImpl, NavigationControllerDelegate implementation: |
- |
-void WebViewImpl::OnNavigate(mojo::URLRequestPtr request) { |
- pending_load_.reset(new PendingWebViewLoad(this)); |
- pending_load_->Init(std::move(request)); |
-} |
- |
-void WebViewImpl::OnDidNavigate() { |
- client_->BackForwardChanged( |
- navigation_controller_.CanGoBack() ? ButtonState::ENABLED |
- : ButtonState::DISABLED, |
- navigation_controller_.CanGoForward() ? ButtonState::ENABLED |
- : ButtonState::DISABLED); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// WebViewImpl, FindControllerDelegate implementation: |
- |
-std::vector<Frame*> WebViewImpl::GetAllFrames() { |
- std::vector<Frame*> all_frames; |
- PreOrderDepthFirstTraverseTree(frame_tree_->root(), &all_frames); |
- return all_frames; |
-} |
- |
-mojom::WebViewClient* WebViewImpl::GetWebViewClient() { |
- return client_.get(); |
-} |
- |
-} // namespace web_view |