Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / renderer / gpu / render_widget_compositor.cc
index f539ada..1308e7c 100644 (file)
@@ -28,6 +28,7 @@
 #include "cc/output/copy_output_result.h"
 #include "cc/resources/single_release_callback.h"
 #include "cc/trees/layer_tree_host.h"
+#include "content/child/child_gpu_memory_buffer_manager.h"
 #include "content/child/child_shared_bitmap_manager.h"
 #include "content/common/content_switches_internal.h"
 #include "content/common/gpu/client/context_provider_command_buffer.h"
@@ -178,8 +179,6 @@ scoped_ptr<RenderWidgetCompositor> RenderWidgetCompositor::Create(
   settings.main_frame_before_activation_enabled =
       cmd->HasSwitch(cc::switches::kEnableMainFrameBeforeActivation) &&
       !cmd->HasSwitch(cc::switches::kDisableMainFrameBeforeActivation);
-  settings.main_frame_before_draw_enabled =
-      !cmd->HasSwitch(cc::switches::kDisableMainFrameBeforeDraw);
   settings.report_overscroll_only_for_scrollable_axes = true;
   settings.accelerated_animation_enabled =
       !cmd->HasSwitch(cc::switches::kDisableThreadedAnimation);
@@ -236,10 +235,6 @@ scoped_ptr<RenderWidgetCompositor> RenderWidgetCompositor::Create(
     settings.use_one_copy = render_thread->is_one_copy_enabled();
   }
 
-  if (cmd->HasSwitch(switches::kEnableBleedingEdgeRenderingFastPaths)) {
-    settings.recording_mode = cc::LayerTreeSettings::RecordWithSkRecord;
-  }
-
   settings.calculate_top_controls_position =
       cmd->HasSwitch(cc::switches::kEnableTopControlsPositionCalculation);
   if (cmd->HasSwitch(cc::switches::kTopControlsHeight)) {
@@ -362,6 +357,7 @@ scoped_ptr<RenderWidgetCompositor> RenderWidgetCompositor::Create(
   } else {
     settings.scrollbar_animator = cc::LayerTreeSettings::LinearFade;
     settings.scrollbar_fade_delay_ms = 300;
+    settings.scrollbar_fade_resize_delay_ms = 2000;
     settings.scrollbar_fade_duration_ms = 300;
     settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128);
   }
@@ -411,6 +407,7 @@ scoped_ptr<RenderWidgetCompositor> RenderWidgetCompositor::Create(
     settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128);
   }
   settings.scrollbar_fade_delay_ms = 500;
+  settings.scrollbar_fade_resize_delay_ms = 500;
   settings.scrollbar_fade_duration_ms = 300;
 #endif
 
@@ -532,11 +529,13 @@ void RenderWidgetCompositor::Initialize(cc::LayerTreeSettings settings) {
       main_thread_compositor_task_runner(base::MessageLoopProxy::current());
   RenderThreadImpl* render_thread = RenderThreadImpl::current();
   cc::SharedBitmapManager* shared_bitmap_manager = NULL;
+  gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager = NULL;
   // render_thread may be NULL in tests.
   if (render_thread) {
     compositor_message_loop_proxy =
         render_thread->compositor_message_loop_proxy();
     shared_bitmap_manager = render_thread->shared_bitmap_manager();
+    gpu_memory_buffer_manager = render_thread->gpu_memory_buffer_manager();
     main_thread_compositor_task_runner =
         render_thread->main_thread_compositor_task_runner();
   }
@@ -544,6 +543,7 @@ void RenderWidgetCompositor::Initialize(cc::LayerTreeSettings settings) {
     layer_tree_host_ =
         cc::LayerTreeHost::CreateThreaded(this,
                                           shared_bitmap_manager,
+                                          gpu_memory_buffer_manager,
                                           settings,
                                           main_thread_compositor_task_runner,
                                           compositor_message_loop_proxy);
@@ -552,6 +552,7 @@ void RenderWidgetCompositor::Initialize(cc::LayerTreeSettings settings) {
         this,
         this,
         shared_bitmap_manager,
+        gpu_memory_buffer_manager,
         settings,
         main_thread_compositor_task_runner);
   }
@@ -711,15 +712,18 @@ void CompositeAndReadbackAsyncCallback(
 
 void RenderWidgetCompositor::compositeAndReadbackAsync(
     blink::WebCompositeAndReadbackAsyncCallback* callback) {
-  DCHECK(layer_tree_host_->root_layer());
-  scoped_ptr<cc::CopyOutputRequest> request =
+  DCHECK(!temporary_copy_output_request_);
+  temporary_copy_output_request_ =
       cc::CopyOutputRequest::CreateBitmapRequest(
           base::Bind(&CompositeAndReadbackAsyncCallback, callback));
-  layer_tree_host_->root_layer()->RequestCopyOfOutput(request.Pass());
-
+  // Force a commit to happen. The temporary copy output request will
+  // be installed after layout which will happen as a part of the commit, when
+  // there is guaranteed to be a root layer.
   if (!threaded_ &&
       !layer_tree_host_->settings().single_thread_proxy_scheduler) {
     layer_tree_host_->Composite(gfx::FrameTime::Now());
+  } else {
+    layer_tree_host_->SetNeedsCommit();
   }
 }
 
@@ -789,6 +793,24 @@ void RenderWidgetCompositor::BeginMainFrame(const cc::BeginFrameArgs& args) {
 
 void RenderWidgetCompositor::Layout() {
   widget_->webwidget()->layout();
+
+  if (temporary_copy_output_request_) {
+    DCHECK(layer_tree_host_->root_layer());
+    layer_tree_host_->root_layer()->RequestCopyOfOutput(
+        temporary_copy_output_request_.Pass());
+  }
+}
+
+void RenderWidgetCompositor::ApplyViewportDeltas(
+    const gfx::Vector2d& inner_delta,
+    const gfx::Vector2d& outer_delta,
+    float page_scale,
+    float top_controls_delta) {
+  widget_->webwidget()->applyViewportDeltas(
+      inner_delta,
+      outer_delta,
+      page_scale,
+      top_controls_delta);
 }
 
 void RenderWidgetCompositor::ApplyViewportDeltas(
@@ -813,6 +835,7 @@ void RenderWidgetCompositor::WillCommit() {
 }
 
 void RenderWidgetCompositor::DidCommit() {
+  DCHECK(!temporary_copy_output_request_);
   if (send_v8_idle_notification_after_commit_) {
     base::TimeDelta idle_time = begin_main_frame_time_ +
                                 begin_main_frame_interval_ -