Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(107)

Unified Diff: mojo/services/html_viewer/html_document_view.cc

Issue 776553003: Fix html viewer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Follow review Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/services/html_viewer/html_document_view.cc
diff --git a/mojo/services/html_viewer/html_document_view.cc b/mojo/services/html_viewer/html_document_view.cc
deleted file mode 100644
index 80b7bcd6272e90ca5ce46462f371bdb7bdb22b22..0000000000000000000000000000000000000000
--- a/mojo/services/html_viewer/html_document_view.cc
+++ /dev/null
@@ -1,281 +0,0 @@
-// Copyright 2014 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 "mojo/services/html_viewer/html_document_view.h"
-
-#include "base/bind.h"
-#include "base/location.h"
-#include "base/message_loop/message_loop_proxy.h"
-#include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
-#include "base/strings/string_util.h"
-#include "base/thread_task_runner_handle.h"
-#include "mojo/public/cpp/application/connect.h"
-#include "mojo/public/cpp/system/data_pipe.h"
-#include "mojo/public/interfaces/application/shell.mojom.h"
-#include "mojo/services/html_viewer/blink_input_events_type_converters.h"
-#include "mojo/services/html_viewer/blink_url_request_type_converters.h"
-#include "mojo/services/html_viewer/weblayertreeview_impl.h"
-#include "mojo/services/html_viewer/webmediaplayer_factory.h"
-#include "mojo/services/html_viewer/webstoragenamespace_impl.h"
-#include "mojo/services/html_viewer/weburlloader_impl.h"
-#include "mojo/services/public/cpp/view_manager/view.h"
-#include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h"
-#include "skia/ext/refptr.h"
-#include "third_party/WebKit/public/platform/Platform.h"
-#include "third_party/WebKit/public/platform/WebHTTPHeaderVisitor.h"
-#include "third_party/WebKit/public/platform/WebSize.h"
-#include "third_party/WebKit/public/web/WebConsoleMessage.h"
-#include "third_party/WebKit/public/web/WebDocument.h"
-#include "third_party/WebKit/public/web/WebElement.h"
-#include "third_party/WebKit/public/web/WebInputEvent.h"
-#include "third_party/WebKit/public/web/WebLocalFrame.h"
-#include "third_party/WebKit/public/web/WebScriptSource.h"
-#include "third_party/WebKit/public/web/WebSettings.h"
-#include "third_party/WebKit/public/web/WebView.h"
-#include "third_party/skia/include/core/SkCanvas.h"
-#include "third_party/skia/include/core/SkColor.h"
-#include "third_party/skia/include/core/SkDevice.h"
-
-namespace mojo {
-namespace {
-
-void ConfigureSettings(blink::WebSettings* settings) {
- settings->setCookieEnabled(true);
- settings->setDefaultFixedFontSize(13);
- settings->setDefaultFontSize(16);
- settings->setLoadsImagesAutomatically(true);
- settings->setJavaScriptEnabled(true);
-}
-
-Target WebNavigationPolicyToNavigationTarget(
- blink::WebNavigationPolicy policy) {
- switch (policy) {
- case blink::WebNavigationPolicyCurrentTab:
- return TARGET_SOURCE_NODE;
- case blink::WebNavigationPolicyNewBackgroundTab:
- case blink::WebNavigationPolicyNewForegroundTab:
- case blink::WebNavigationPolicyNewWindow:
- case blink::WebNavigationPolicyNewPopup:
- return TARGET_NEW_NODE;
- default:
- return TARGET_DEFAULT;
- }
-}
-
-bool CanNavigateLocally(blink::WebFrame* frame,
- const blink::WebURLRequest& request) {
- // For now, we just load child frames locally.
- // TODO(aa): In the future, this should use embedding to connect to a
- // different instance of Blink if the frame is cross-origin.
- if (frame->parent())
- return true;
-
- // If we have extraData() it means we already have the url response
- // (presumably because we are being called via Navigate()). In that case we
- // can go ahead and navigate locally.
- if (request.extraData())
- return true;
-
- // Otherwise we don't know if we're the right app to handle this request. Ask
- // host to do the navigation for us.
- return false;
-}
-
-} // namespace
-
-HTMLDocumentView::HTMLDocumentView(
- URLResponsePtr response,
- ShellPtr shell,
- scoped_refptr<base::MessageLoopProxy> compositor_thread,
- WebMediaPlayerFactory* web_media_player_factory)
- : response_(response.Pass()),
- shell_(shell.Pass()),
- web_view_(NULL),
- root_(NULL),
- view_manager_client_factory_(shell_.get(), this),
- compositor_thread_(compositor_thread),
- web_media_player_factory_(web_media_player_factory) {
- shell_.set_client(this);
-}
-
-HTMLDocumentView::~HTMLDocumentView() {
- STLDeleteElements(&ax_provider_impls_);
-
- if (web_view_)
- web_view_->close();
- if (root_)
- root_->RemoveObserver(this);
-}
-
-void HTMLDocumentView::AcceptConnection(const String& requestor_url,
- ServiceProviderPtr provider) {
- exported_services_.AddService(this);
- exported_services_.AddService(&view_manager_client_factory_);
- WeakBindToPipe(&exported_services_, provider.PassMessagePipe());
- Load(response_.Pass());
-}
-
-void HTMLDocumentView::Initialize(Array<String> args) {
-}
-
-void HTMLDocumentView::OnEmbed(
- ViewManager* view_manager,
- View* root,
- ServiceProviderImpl* embedee_service_provider_impl,
- scoped_ptr<ServiceProvider> embedder_service_provider) {
- root_ = root;
- embedder_service_provider_ = embedder_service_provider.Pass();
- navigator_host_.set_service_provider(embedder_service_provider_.get());
-
- blink::WebSize root_size(root_->bounds().width, root_->bounds().height);
- web_view_->resize(root_size);
- web_layer_tree_view_impl_->setViewportSize(root_size);
- web_layer_tree_view_impl_->set_view(root_);
- root_->AddObserver(this);
-}
-
-void HTMLDocumentView::Create(ApplicationConnection* connection,
- InterfaceRequest<AxProvider> request) {
- if (!web_view_)
- return;
- ax_provider_impls_.insert(
- WeakBindToRequest(new AxProviderImpl(web_view_), &request));
-}
-
-void HTMLDocumentView::OnViewManagerDisconnected(ViewManager* view_manager) {
- // TODO(aa): Need to figure out how shutdown works.
-}
-
-void HTMLDocumentView::Load(URLResponsePtr response) {
- web_view_ = blink::WebView::create(this);
- web_layer_tree_view_impl_->set_widget(web_view_);
- ConfigureSettings(web_view_->settings());
- web_view_->setMainFrame(blink::WebLocalFrame::create(this));
-
- GURL url(response->url);
-
- WebURLRequestExtraData* extra_data = new WebURLRequestExtraData;
- extra_data->synthetic_response = response.Pass();
-
- blink::WebURLRequest web_request;
- web_request.initialize();
- web_request.setURL(url);
- web_request.setExtraData(extra_data);
-
- web_view_->mainFrame()->loadRequest(web_request);
-}
-
-blink::WebStorageNamespace* HTMLDocumentView::createSessionStorageNamespace() {
- return new WebStorageNamespaceImpl();
-}
-
-void HTMLDocumentView::initializeLayerTreeView() {
- ServiceProviderPtr surfaces_service_provider;
- shell_->ConnectToApplication("mojo:surfaces_service",
- GetProxy(&surfaces_service_provider));
- SurfacesServicePtr surfaces_service;
- ConnectToService(surfaces_service_provider.get(), &surfaces_service);
-
- ServiceProviderPtr gpu_service_provider;
- // TODO(jamesr): Should be mojo:gpu_service
- shell_->ConnectToApplication("mojo:native_viewport_service",
- GetProxy(&gpu_service_provider));
- GpuPtr gpu_service;
- ConnectToService(gpu_service_provider.get(), &gpu_service);
- web_layer_tree_view_impl_.reset(new WebLayerTreeViewImpl(
- compositor_thread_, surfaces_service.Pass(), gpu_service.Pass()));
-}
-
-blink::WebLayerTreeView* HTMLDocumentView::layerTreeView() {
- return web_layer_tree_view_impl_.get();
-}
-
-blink::WebMediaPlayer* HTMLDocumentView::createMediaPlayer(
- blink::WebLocalFrame* frame,
- const blink::WebURL& url,
- blink::WebMediaPlayerClient* client) {
- return web_media_player_factory_->CreateMediaPlayer(
- frame, url, client, shell_.get());
-}
-
-blink::WebMediaPlayer* HTMLDocumentView::createMediaPlayer(
- blink::WebLocalFrame* frame,
- const blink::WebURL& url,
- blink::WebMediaPlayerClient* client,
- blink::WebContentDecryptionModule* initial_cdm) {
- return createMediaPlayer(frame, url, client);
-}
-
-blink::WebFrame* HTMLDocumentView::createChildFrame(
- blink::WebLocalFrame* parent,
- const blink::WebString& frameName) {
- blink::WebLocalFrame* web_frame = blink::WebLocalFrame::create(this);
- parent->appendChild(web_frame);
- return web_frame;
-}
-
-void HTMLDocumentView::frameDetached(blink::WebFrame* frame) {
- if (frame->parent())
- frame->parent()->removeChild(frame);
-
- // |frame| is invalid after here.
- frame->close();
-}
-
-blink::WebCookieJar* HTMLDocumentView::cookieJar(blink::WebLocalFrame* frame) {
- // TODO(darin): Blink does not fallback to the Platform provided WebCookieJar.
- // Either it should, as it once did, or we should find another solution here.
- return blink::Platform::current()->cookieJar();
-}
-
-blink::WebNavigationPolicy HTMLDocumentView::decidePolicyForNavigation(
- blink::WebLocalFrame* frame, blink::WebDataSource::ExtraData* data,
- const blink::WebURLRequest& request, blink::WebNavigationType nav_type,
- blink::WebNavigationPolicy default_policy, bool is_redirect) {
- if (CanNavigateLocally(frame, request))
- return default_policy;
-
- navigator_host_->RequestNavigate(
- WebNavigationPolicyToNavigationTarget(default_policy),
- URLRequest::From(request).Pass());
-
- return blink::WebNavigationPolicyIgnore;
-}
-
-void HTMLDocumentView::didAddMessageToConsole(
- const blink::WebConsoleMessage& message,
- const blink::WebString& source_name,
- unsigned source_line,
- const blink::WebString& stack_trace) {
-}
-
-void HTMLDocumentView::didNavigateWithinPage(
- blink::WebLocalFrame* frame, const blink::WebHistoryItem& history_item,
- blink::WebHistoryCommitType commit_type) {
- navigator_host_->DidNavigateLocally(history_item.urlString().utf8());
-}
-
-void HTMLDocumentView::OnViewBoundsChanged(View* view,
- const Rect& old_bounds,
- const Rect& new_bounds) {
- DCHECK_EQ(view, root_);
- web_view_->resize(
- blink::WebSize(view->bounds().width, view->bounds().height));
-}
-
-void HTMLDocumentView::OnViewDestroyed(View* view) {
- DCHECK_EQ(view, root_);
- view->RemoveObserver(this);
- root_ = NULL;
-}
-
-void HTMLDocumentView::OnViewInputEvent(View* view, const EventPtr& event) {
- scoped_ptr<blink::WebInputEvent> web_event =
- event.To<scoped_ptr<blink::WebInputEvent> >();
- if (web_event)
- web_view_->handleInputEvent(*web_event);
-}
-
-} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698