Chromium Code Reviews| Index: sky/viewer/document_view.cc |
| diff --git a/sky/viewer/document_view.cc b/sky/viewer/document_view.cc |
| index 731edbf85e7850090e9e3260be275be23c886749..e7cc0115904f0841c87d5a322788f4d884ad390f 100644 |
| --- a/sky/viewer/document_view.cc |
| +++ b/sky/viewer/document_view.cc |
| @@ -20,6 +20,8 @@ |
| #include "skia/ext/refptr.h" |
| #include "sky/compositor/layer.h" |
| #include "sky/compositor/layer_host.h" |
| +#include "sky/compositor/rasterizer_bitmap.h" |
| +#include "sky/compositor/rasterizer_ganesh.h" |
| #include "sky/engine/public/platform/Platform.h" |
| #include "sky/engine/public/platform/WebHTTPHeaderVisitor.h" |
| #include "sky/engine/public/platform/WebInputEvent.h" |
| @@ -38,6 +40,7 @@ |
| #include "sky/viewer/converters/url_request_types.h" |
| #include "sky/viewer/internals.h" |
| #include "sky/viewer/platform/weburlloader_impl.h" |
| +#include "sky/viewer/runtime_flags.h" |
| #include "sky/viewer/script/script_runner.h" |
| #include "third_party/skia/include/core/SkCanvas.h" |
| #include "third_party/skia/include/core/SkColor.h" |
| @@ -79,12 +82,13 @@ DocumentView::DocumentView( |
| mojo::Shell* shell) |
| : response_(response.Pass()), |
| shell_(shell), |
| - web_view_(NULL), |
| - root_(NULL), |
| + web_view_(nullptr), |
| + root_(nullptr), |
| view_manager_client_factory_(shell_, this), |
| inspector_service_factory_(this), |
| - weak_factory_(this), |
| - debugger_id_(s_next_debugger_id++) { |
| + bitmap_rasterizer_(nullptr), |
| + debugger_id_(s_next_debugger_id++), |
| + weak_factory_(this) { |
| // TODO(jamesr): Is this right? |
| exported_services_.AddService(&view_manager_client_factory_); |
| mojo::WeakBindToPipe(&exported_services_, services.PassMessagePipe()); |
| @@ -137,11 +141,24 @@ void DocumentView::Load(mojo::URLResponsePtr response) { |
| void DocumentView::initializeLayerTreeView() { |
| layer_host_.reset(new LayerHost(this)); |
| root_layer_ = make_scoped_refptr(new Layer(this)); |
| + root_layer_->set_rasterizer(CreateRasterizer()); |
| layer_host_->SetRootLayer(root_layer_); |
| } |
| +scoped_ptr<Rasterizer> DocumentView::CreateRasterizer() { |
| + if (!RuntimeFlags::Get().testing()) |
| + return make_scoped_ptr(new RasterizerGanesh(layer_host_.get())); |
| + // TODO(abarth): If we have more than one layer, we'll need to re-think how |
| + // we capture pixels for testing; |
| + DCHECK(!bitmap_rasterizer_); |
| + bitmap_rasterizer_ = new RasterizerBitmap(layer_host_.get()); |
| + return make_scoped_ptr(bitmap_rasterizer_); |
| +} |
| + |
| void DocumentView::GetPixelsForTesting(std::vector<unsigned char>* pixels) { |
| - return layer_host_->GetPixelsForTesting(pixels); |
| + DCHECK(RuntimeFlags::Get().testing()) << "Requires testing runtime flag"; |
|
jamesr
2015/01/22 01:20:44
fyi this check fires when loading up most of the s
abarth-chromium
2015/01/22 02:05:33
Interesting. We should catch that in internals.cc
|
| + DCHECK(root_layer_) << "The root layer owns the rasterizer"; |
| + return bitmap_rasterizer_->GetPixelsForTesting(pixels); |
| } |
| mojo::Shell* DocumentView::GetShell() { |