OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "android_webview/browser/browser_view_renderer.h" | 5 #include "android_webview/browser/browser_view_renderer.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "android_webview/browser/browser_view_renderer_client.h" | 9 #include "android_webview/browser/browser_view_renderer_client.h" |
10 #include "android_webview/browser/child_frame.h" | 10 #include "android_webview/browser/child_frame.h" |
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 } | 371 } |
372 } | 372 } |
373 | 373 |
374 void BrowserViewRenderer::SetIsPaused(bool paused) { | 374 void BrowserViewRenderer::SetIsPaused(bool paused) { |
375 TRACE_EVENT_INSTANT1("android_webview", | 375 TRACE_EVENT_INSTANT1("android_webview", |
376 "BrowserViewRenderer::SetIsPaused", | 376 "BrowserViewRenderer::SetIsPaused", |
377 TRACE_EVENT_SCOPE_THREAD, | 377 TRACE_EVENT_SCOPE_THREAD, |
378 "paused", | 378 "paused", |
379 paused); | 379 paused); |
380 is_paused_ = paused; | 380 is_paused_ = paused; |
381 UpdateCompositorIsActive(); | |
382 } | 381 } |
383 | 382 |
384 void BrowserViewRenderer::SetViewVisibility(bool view_visible) { | 383 void BrowserViewRenderer::SetViewVisibility(bool view_visible) { |
385 TRACE_EVENT_INSTANT1("android_webview", | 384 TRACE_EVENT_INSTANT1("android_webview", |
386 "BrowserViewRenderer::SetViewVisibility", | 385 "BrowserViewRenderer::SetViewVisibility", |
387 TRACE_EVENT_SCOPE_THREAD, | 386 TRACE_EVENT_SCOPE_THREAD, |
388 "view_visible", | 387 "view_visible", |
389 view_visible); | 388 view_visible); |
390 view_visible_ = view_visible; | 389 view_visible_ = view_visible; |
391 } | 390 } |
392 | 391 |
393 void BrowserViewRenderer::SetWindowVisibility(bool window_visible) { | 392 void BrowserViewRenderer::SetWindowVisibility(bool window_visible) { |
394 TRACE_EVENT_INSTANT1("android_webview", | 393 TRACE_EVENT_INSTANT1("android_webview", |
395 "BrowserViewRenderer::SetWindowVisibility", | 394 "BrowserViewRenderer::SetWindowVisibility", |
396 TRACE_EVENT_SCOPE_THREAD, | 395 TRACE_EVENT_SCOPE_THREAD, |
397 "window_visible", | 396 "window_visible", |
398 window_visible); | 397 window_visible); |
399 window_visible_ = window_visible; | 398 window_visible_ = window_visible; |
400 UpdateCompositorIsActive(); | |
401 } | 399 } |
402 | 400 |
403 void BrowserViewRenderer::OnSizeChanged(int width, int height) { | 401 void BrowserViewRenderer::OnSizeChanged(int width, int height) { |
404 TRACE_EVENT_INSTANT2("android_webview", | 402 TRACE_EVENT_INSTANT2("android_webview", |
405 "BrowserViewRenderer::OnSizeChanged", | 403 "BrowserViewRenderer::OnSizeChanged", |
406 TRACE_EVENT_SCOPE_THREAD, | 404 TRACE_EVENT_SCOPE_THREAD, |
407 "width", | 405 "width", |
408 width, | 406 width, |
409 "height", | 407 "height", |
410 height); | 408 height); |
411 size_.SetSize(width, height); | 409 size_.SetSize(width, height); |
412 if (offscreen_pre_raster_) | 410 if (offscreen_pre_raster_) |
413 UpdateMemoryPolicy(); | 411 UpdateMemoryPolicy(); |
414 } | 412 } |
415 | 413 |
416 void BrowserViewRenderer::OnAttachedToWindow(int width, int height) { | 414 void BrowserViewRenderer::OnAttachedToWindow(int width, int height) { |
417 TRACE_EVENT2("android_webview", | 415 TRACE_EVENT2("android_webview", |
418 "BrowserViewRenderer::OnAttachedToWindow", | 416 "BrowserViewRenderer::OnAttachedToWindow", |
419 "width", | 417 "width", |
420 width, | 418 width, |
421 "height", | 419 "height", |
422 height); | 420 height); |
423 attached_to_window_ = true; | 421 attached_to_window_ = true; |
424 size_.SetSize(width, height); | 422 size_.SetSize(width, height); |
425 if (offscreen_pre_raster_) | 423 if (offscreen_pre_raster_) |
426 UpdateMemoryPolicy(); | 424 UpdateMemoryPolicy(); |
427 UpdateCompositorIsActive(); | |
428 } | 425 } |
429 | 426 |
430 void BrowserViewRenderer::OnDetachedFromWindow() { | 427 void BrowserViewRenderer::OnDetachedFromWindow() { |
431 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDetachedFromWindow"); | 428 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDetachedFromWindow"); |
432 attached_to_window_ = false; | 429 attached_to_window_ = false; |
433 ReleaseHardware(); | 430 ReleaseHardware(); |
434 UpdateCompositorIsActive(); | |
435 } | 431 } |
436 | 432 |
437 void BrowserViewRenderer::ZoomBy(float delta) { | 433 void BrowserViewRenderer::ZoomBy(float delta) { |
438 if (!compositor_) | 434 if (!compositor_) |
439 return; | 435 return; |
440 compositor_->SynchronouslyZoomBy( | 436 compositor_->SynchronouslyZoomBy( |
441 delta, gfx::Point(size_.width() / 2, size_.height() / 2)); | 437 delta, gfx::Point(size_.width() / 2, size_.height() / 2)); |
442 } | 438 } |
443 | 439 |
444 void BrowserViewRenderer::OnComputeScroll(base::TimeTicks animation_time) { | 440 void BrowserViewRenderer::OnComputeScroll(base::TimeTicks animation_time) { |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 } | 497 } |
502 | 498 |
503 void BrowserViewRenderer::DidDestroyCompositor( | 499 void BrowserViewRenderer::DidDestroyCompositor( |
504 content::SynchronousCompositor* compositor) { | 500 content::SynchronousCompositor* compositor) { |
505 TRACE_EVENT_INSTANT0("android_webview", | 501 TRACE_EVENT_INSTANT0("android_webview", |
506 "BrowserViewRenderer::DidDestroyCompositor", | 502 "BrowserViewRenderer::DidDestroyCompositor", |
507 TRACE_EVENT_SCOPE_THREAD); | 503 TRACE_EVENT_SCOPE_THREAD); |
508 DCHECK(compositor_); | 504 DCHECK(compositor_); |
509 if (compositor_ == compositor) | 505 if (compositor_ == compositor) |
510 compositor_ = nullptr; | 506 compositor_ = nullptr; |
511 compositor->SetIsActive(false); | |
512 compositor_map_.erase(GetCompositorID(compositor)); | 507 compositor_map_.erase(GetCompositorID(compositor)); |
513 } | 508 } |
514 | 509 |
515 void BrowserViewRenderer::DidBecomeCurrent( | 510 void BrowserViewRenderer::DidBecomeCurrent( |
516 content::SynchronousCompositor* compositor) { | 511 content::SynchronousCompositor* compositor) { |
517 TRACE_EVENT_INSTANT0("android_webview", | 512 TRACE_EVENT_INSTANT0("android_webview", |
518 "BrowserViewRenderer::DidBecomeCurrent", | 513 "BrowserViewRenderer::DidBecomeCurrent", |
519 TRACE_EVENT_SCOPE_THREAD); | 514 TRACE_EVENT_SCOPE_THREAD); |
520 DCHECK(compositor); | 515 DCHECK(compositor); |
521 DCHECK(GetCompositorID(compositor)); | 516 DCHECK(GetCompositorID(compositor)); |
522 if (compositor_) | |
523 compositor_->SetIsActive(false); | |
524 | |
525 compositor_ = compositor; | 517 compositor_ = compositor; |
526 UpdateCompositorIsActive(); | |
527 } | 518 } |
528 | 519 |
529 void BrowserViewRenderer::SetDipScale(float dip_scale) { | 520 void BrowserViewRenderer::SetDipScale(float dip_scale) { |
530 dip_scale_ = dip_scale; | 521 dip_scale_ = dip_scale; |
531 CHECK_GT(dip_scale_, 0.f); | 522 CHECK_GT(dip_scale_, 0.f); |
532 } | 523 } |
533 | 524 |
534 gfx::Vector2d BrowserViewRenderer::max_scroll_offset() const { | 525 gfx::Vector2d BrowserViewRenderer::max_scroll_offset() const { |
535 DCHECK_GT(dip_scale_, 0.f); | 526 DCHECK_GT(dip_scale_, 0.f); |
536 return gfx::ToCeiledVector2d(gfx::ScaleVector2d( | 527 return gfx::ToCeiledVector2d(gfx::ScaleVector2d( |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
699 TRACE_EVENT_INSTANT0("android_webview", "BrowserViewRenderer::PostInvalidate", | 690 TRACE_EVENT_INSTANT0("android_webview", "BrowserViewRenderer::PostInvalidate", |
700 TRACE_EVENT_SCOPE_THREAD); | 691 TRACE_EVENT_SCOPE_THREAD); |
701 client_->PostInvalidate(); | 692 client_->PostInvalidate(); |
702 } | 693 } |
703 | 694 |
704 bool BrowserViewRenderer::CompositeSW(SkCanvas* canvas) { | 695 bool BrowserViewRenderer::CompositeSW(SkCanvas* canvas) { |
705 DCHECK(compositor_); | 696 DCHECK(compositor_); |
706 return compositor_->DemandDrawSw(canvas); | 697 return compositor_->DemandDrawSw(canvas); |
707 } | 698 } |
708 | 699 |
709 void BrowserViewRenderer::UpdateCompositorIsActive() { | |
710 if (compositor_) { | |
711 compositor_->SetIsActive(!is_paused_ && | |
712 (!attached_to_window_ || window_visible_)); | |
713 } | |
714 } | |
715 | |
716 std::string BrowserViewRenderer::ToString() const { | 700 std::string BrowserViewRenderer::ToString() const { |
717 std::string str; | 701 std::string str; |
718 base::StringAppendF(&str, "is_paused: %d ", is_paused_); | 702 base::StringAppendF(&str, "is_paused: %d ", is_paused_); |
719 base::StringAppendF(&str, "view_visible: %d ", view_visible_); | 703 base::StringAppendF(&str, "view_visible: %d ", view_visible_); |
720 base::StringAppendF(&str, "window_visible: %d ", window_visible_); | 704 base::StringAppendF(&str, "window_visible: %d ", window_visible_); |
721 base::StringAppendF(&str, "dip_scale: %f ", dip_scale_); | 705 base::StringAppendF(&str, "dip_scale: %f ", dip_scale_); |
722 base::StringAppendF(&str, "page_scale_factor: %f ", page_scale_factor_); | 706 base::StringAppendF(&str, "page_scale_factor: %f ", page_scale_factor_); |
723 base::StringAppendF(&str, "view size: %s ", size_.ToString().c_str()); | 707 base::StringAppendF(&str, "view size: %s ", size_.ToString().c_str()); |
724 base::StringAppendF(&str, "attached_to_window: %d ", attached_to_window_); | 708 base::StringAppendF(&str, "attached_to_window: %d ", attached_to_window_); |
725 base::StringAppendF(&str, | 709 base::StringAppendF(&str, |
726 "global visible rect: %s ", | 710 "global visible rect: %s ", |
727 last_on_draw_global_visible_rect_.ToString().c_str()); | 711 last_on_draw_global_visible_rect_.ToString().c_str()); |
728 base::StringAppendF( | 712 base::StringAppendF( |
729 &str, "scroll_offset_dip: %s ", scroll_offset_dip_.ToString().c_str()); | 713 &str, "scroll_offset_dip: %s ", scroll_offset_dip_.ToString().c_str()); |
730 base::StringAppendF(&str, | 714 base::StringAppendF(&str, |
731 "overscroll_rounding_error_: %s ", | 715 "overscroll_rounding_error_: %s ", |
732 overscroll_rounding_error_.ToString().c_str()); | 716 overscroll_rounding_error_.ToString().c_str()); |
733 base::StringAppendF( | 717 base::StringAppendF( |
734 &str, "on_new_picture_enable: %d ", on_new_picture_enable_); | 718 &str, "on_new_picture_enable: %d ", on_new_picture_enable_); |
735 base::StringAppendF(&str, "clear_view: %d ", clear_view_); | 719 base::StringAppendF(&str, "clear_view: %d ", clear_view_); |
736 return str; | 720 return str; |
737 } | 721 } |
738 | 722 |
739 } // namespace android_webview | 723 } // namespace android_webview |
OLD | NEW |