| 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
|
| index 8bdd50108375be9db6b1248243177ded2841c2a7..d0c48f8b8466c0cb301417d2a17c50220de3dcee 100644
|
| --- a/mojo/services/html_viewer/html_document_view.cc
|
| +++ b/mojo/services/html_viewer/html_document_view.cc
|
| @@ -6,7 +6,6 @@
|
|
|
| #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/strings/string_util.h"
|
| #include "base/thread_task_runner_handle.h"
|
| @@ -16,11 +15,9 @@
|
| #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/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"
|
| @@ -40,6 +37,7 @@ namespace mojo {
|
| namespace {
|
|
|
| void ConfigureSettings(blink::WebSettings* settings) {
|
| + settings->setAcceleratedCompositingEnabled(false);
|
| settings->setCookieEnabled(true);
|
| settings->setDefaultFixedFontSize(13);
|
| settings->setDefaultFontSize(16);
|
| @@ -86,13 +84,12 @@ bool CanNavigateLocally(blink::WebFrame* frame,
|
| HTMLDocumentView::HTMLDocumentView(
|
| URLResponsePtr response,
|
| InterfaceRequest<ServiceProvider> service_provider_request,
|
| - Shell* shell,
|
| - scoped_refptr<base::MessageLoopProxy> compositor_thread)
|
| + Shell* shell)
|
| : shell_(shell),
|
| web_view_(NULL),
|
| root_(NULL),
|
| view_manager_client_factory_(shell, this),
|
| - compositor_thread_(compositor_thread),
|
| + repaint_pending_(false),
|
| weak_factory_(this) {
|
| ServiceProviderImpl* exported_services = new ServiceProviderImpl();
|
| exported_services->AddService(&view_manager_client_factory_);
|
| @@ -116,9 +113,8 @@ void HTMLDocumentView::OnEmbed(
|
| embedder_service_provider_ = embedder_service_provider.Pass();
|
| navigator_host_.set_service_provider(embedder_service_provider_.get());
|
|
|
| + root_->SetColor(SK_ColorCYAN); // Dummy background color.
|
| web_view_->resize(root_->bounds().size());
|
| - web_layer_tree_view_impl_->setViewportSize(root_->bounds().size());
|
| - web_layer_tree_view_impl_->set_view(root_);
|
| root_->AddObserver(this);
|
| }
|
|
|
| @@ -128,7 +124,6 @@ void HTMLDocumentView::OnViewManagerDisconnected(ViewManager* view_manager) {
|
|
|
| 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));
|
|
|
| @@ -149,25 +144,22 @@ blink::WebStorageNamespace* HTMLDocumentView::createSessionStorageNamespace() {
|
| return new WebStorageNamespaceImpl();
|
| }
|
|
|
| -void HTMLDocumentView::initializeLayerTreeView() {
|
| - ServiceProviderPtr surfaces_service_provider;
|
| - shell_->ConnectToApplication("mojo:mojo_surfaces_service",
|
| - Get(&surfaces_service_provider));
|
| - InterfacePtr<SurfacesService> surfaces_service;
|
| - ConnectToService(surfaces_service_provider.get(), &surfaces_service);
|
| -
|
| - ServiceProviderPtr gpu_service_provider;
|
| - // TODO(jamesr): Should be mojo:mojo_gpu_service
|
| - shell_->ConnectToApplication("mojo:mojo_native_viewport_service",
|
| - Get(&gpu_service_provider));
|
| - InterfacePtr<Gpu> 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()));
|
| +void HTMLDocumentView::didInvalidateRect(const blink::WebRect& rect) {
|
| + if (!repaint_pending_) {
|
| + repaint_pending_ = true;
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&HTMLDocumentView::Repaint, weak_factory_.GetWeakPtr()));
|
| + }
|
| }
|
|
|
| -blink::WebLayerTreeView* HTMLDocumentView::layerTreeView() {
|
| - return web_layer_tree_view_impl_.get();
|
| +bool HTMLDocumentView::allowsBrokenNullLayerTreeView() const {
|
| + // TODO(darin): Switch to using compositor bindings.
|
| + //
|
| + // NOTE: Note to Blink maintainers, feel free to break this code if it is the
|
| + // last NOT using compositor bindings and you want to delete this code path.
|
| + //
|
| + return true;
|
| }
|
|
|
| blink::WebFrame* HTMLDocumentView::createChildFrame(
|
| @@ -239,4 +231,24 @@ void HTMLDocumentView::OnViewInputEvent(View* view, const EventPtr& event) {
|
| web_view_->handleInputEvent(*web_event);
|
| }
|
|
|
| +void HTMLDocumentView::Repaint() {
|
| + repaint_pending_ = false;
|
| +
|
| + if (!root_)
|
| + return;
|
| +
|
| + web_view_->animate(0.0);
|
| + web_view_->layout();
|
| +
|
| + int width = web_view_->size().width;
|
| + int height = web_view_->size().height;
|
| +
|
| + skia::RefPtr<SkCanvas> canvas = skia::AdoptRef(SkCanvas::NewRaster(
|
| + SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType)));
|
| +
|
| + web_view_->paint(canvas.get(), gfx::Rect(0, 0, width, height));
|
| +
|
| + root_->SetContents(canvas->getDevice()->accessBitmap(false));
|
| +}
|
| +
|
| } // namespace mojo
|
|
|