| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/render_view_impl.h" | 5 #include "content/renderer/render_view_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 base::CompareCase::SENSITIVE)) { | 624 base::CompareCase::SENSITIVE)) { |
| 625 return WebSettings::V8CacheStrategiesForCacheStorage::Normal; | 625 return WebSettings::V8CacheStrategiesForCacheStorage::Normal; |
| 626 } else if (base::StartsWith(v8_cache_strategies, "aggressive", | 626 } else if (base::StartsWith(v8_cache_strategies, "aggressive", |
| 627 base::CompareCase::SENSITIVE)) { | 627 base::CompareCase::SENSITIVE)) { |
| 628 return WebSettings::V8CacheStrategiesForCacheStorage::Aggressive; | 628 return WebSettings::V8CacheStrategiesForCacheStorage::Aggressive; |
| 629 } else { | 629 } else { |
| 630 return WebSettings::V8CacheStrategiesForCacheStorage::Default; | 630 return WebSettings::V8CacheStrategiesForCacheStorage::Default; |
| 631 } | 631 } |
| 632 } | 632 } |
| 633 | 633 |
| 634 // This class represents promise which is robust to (will not be broken by) |
| 635 // |DidNotSwapReason::SWAP_FAILS| events. |
| 636 class AlwaysDrawSwapPromise : public cc::SwapPromise { |
| 637 public: |
| 638 explicit AlwaysDrawSwapPromise(const ui::LatencyInfo& latency_info) |
| 639 : latency_info_(latency_info) {} |
| 640 |
| 641 ~AlwaysDrawSwapPromise() override = default; |
| 642 |
| 643 void DidActivate() override {} |
| 644 |
| 645 void DidSwap(cc::CompositorFrameMetadata* metadata) override { |
| 646 DCHECK(!latency_info_.terminated()); |
| 647 metadata->latency_info.push_back(latency_info_); |
| 648 } |
| 649 |
| 650 DidNotSwapAction DidNotSwap(DidNotSwapReason reason) override { |
| 651 return reason == DidNotSwapReason::SWAP_FAILS |
| 652 ? DidNotSwapAction::KEEP_ACTIVE |
| 653 : DidNotSwapAction::BREAK_PROMISE; |
| 654 } |
| 655 |
| 656 void OnCommit() override {} |
| 657 |
| 658 int64_t TraceId() const override { return latency_info_.trace_id(); } |
| 659 |
| 660 private: |
| 661 ui::LatencyInfo latency_info_; |
| 662 }; |
| 663 |
| 634 } // namespace | 664 } // namespace |
| 635 | 665 |
| 636 RenderViewImpl::RenderViewImpl(CompositorDependencies* compositor_deps, | 666 RenderViewImpl::RenderViewImpl(CompositorDependencies* compositor_deps, |
| 637 const ViewMsg_New_Params& params) | 667 const ViewMsg_New_Params& params) |
| 638 : RenderWidget(compositor_deps, | 668 : RenderWidget(compositor_deps, |
| 639 blink::WebPopupTypeNone, | 669 blink::WebPopupTypeNone, |
| 640 params.initial_size.screen_info, | 670 params.initial_size.screen_info, |
| 641 params.swapped_out, | 671 params.swapped_out, |
| 642 params.hidden, | 672 params.hidden, |
| 643 params.never_visible), | 673 params.never_visible), |
| (...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1459 frames_with_pending_state_.clear(); | 1489 frames_with_pending_state_.clear(); |
| 1460 } | 1490 } |
| 1461 | 1491 |
| 1462 void RenderViewImpl::ApplyWebPreferencesInternal( | 1492 void RenderViewImpl::ApplyWebPreferencesInternal( |
| 1463 const WebPreferences& prefs, | 1493 const WebPreferences& prefs, |
| 1464 blink::WebView* web_view, | 1494 blink::WebView* web_view, |
| 1465 CompositorDependencies* compositor_deps) { | 1495 CompositorDependencies* compositor_deps) { |
| 1466 ApplyWebPreferences(prefs, web_view); | 1496 ApplyWebPreferences(prefs, web_view); |
| 1467 } | 1497 } |
| 1468 | 1498 |
| 1469 void RenderViewImpl::OnForceRedraw(int id) { | 1499 void RenderViewImpl::OnForceRedraw(const ui::LatencyInfo& latency_info) { |
| 1470 ui::LatencyInfo latency_info; | |
| 1471 if (id) { | |
| 1472 latency_info.AddLatencyNumber(ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT, | |
| 1473 0, | |
| 1474 id); | |
| 1475 } | |
| 1476 std::unique_ptr<cc::SwapPromiseMonitor> latency_info_swap_promise_monitor; | |
| 1477 if (RenderWidgetCompositor* rwc = compositor()) { | 1500 if (RenderWidgetCompositor* rwc = compositor()) { |
| 1478 latency_info_swap_promise_monitor = | 1501 rwc->QueueSwapPromise( |
| 1479 rwc->CreateLatencyInfoSwapPromiseMonitor(&latency_info); | 1502 base::MakeUnique<AlwaysDrawSwapPromise>(latency_info)); |
| 1480 } | 1503 } |
| 1481 ScheduleCompositeWithForcedRedraw(); | 1504 ScheduleCompositeWithForcedRedraw(); |
| 1482 } | 1505 } |
| 1483 | 1506 |
| 1484 // blink::WebViewClient ------------------------------------------------------ | 1507 // blink::WebViewClient ------------------------------------------------------ |
| 1485 | 1508 |
| 1486 WebView* RenderViewImpl::createView(WebLocalFrame* creator, | 1509 WebView* RenderViewImpl::createView(WebLocalFrame* creator, |
| 1487 const WebURLRequest& request, | 1510 const WebURLRequest& request, |
| 1488 const WebWindowFeatures& features, | 1511 const WebWindowFeatures& features, |
| 1489 const WebString& frame_name, | 1512 const WebString& frame_name, |
| (...skipping 1589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3079 return render_frame->focused_pepper_plugin(); | 3102 return render_frame->focused_pepper_plugin(); |
| 3080 } | 3103 } |
| 3081 frame = frame->traverseNext(false); | 3104 frame = frame->traverseNext(false); |
| 3082 } | 3105 } |
| 3083 | 3106 |
| 3084 return nullptr; | 3107 return nullptr; |
| 3085 } | 3108 } |
| 3086 #endif | 3109 #endif |
| 3087 | 3110 |
| 3088 } // namespace content | 3111 } // namespace content |
| OLD | NEW |