| 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/browser/web_contents/navigation_controller_impl.h" | 5 #include "content/browser/web_contents/navigation_controller_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 return NULL; | 472 return NULL; |
| 473 | 473 |
| 474 return entries_[index].get(); | 474 return entries_[index].get(); |
| 475 } | 475 } |
| 476 | 476 |
| 477 int NavigationControllerImpl::GetIndexForOffset(int offset) const { | 477 int NavigationControllerImpl::GetIndexForOffset(int offset) const { |
| 478 return GetCurrentEntryIndex() + offset; | 478 return GetCurrentEntryIndex() + offset; |
| 479 } | 479 } |
| 480 | 480 |
| 481 void NavigationControllerImpl::TakeScreenshot() { | 481 void NavigationControllerImpl::TakeScreenshot() { |
| 482 static bool overscroll_enabled = CommandLine::ForCurrentProcess()-> | 482 static bool overscroll_enabled = !CommandLine::ForCurrentProcess()-> |
| 483 HasSwitch(switches::kEnableOverscrollHistoryNavigation); | 483 HasSwitch(switches::kDisableOverscrollHistoryNavigation); |
| 484 if (!overscroll_enabled) | 484 if (!overscroll_enabled) |
| 485 return; | 485 return; |
| 486 | 486 |
| 487 NavigationEntryImpl* entry = | 487 NavigationEntryImpl* entry = |
| 488 NavigationEntryImpl::FromNavigationEntry(GetLastCommittedEntry()); | 488 NavigationEntryImpl::FromNavigationEntry(GetLastCommittedEntry()); |
| 489 if (!entry) | 489 if (!entry) |
| 490 return; | 490 return; |
| 491 | 491 |
| 492 RenderViewHost* render_view_host = web_contents_->GetRenderViewHost(); | 492 RenderViewHost* render_view_host = web_contents_->GetRenderViewHost(); |
| 493 if (!static_cast<RenderViewHostImpl*> |
| 494 (render_view_host)->overscroll_controller()) { |
| 495 return; |
| 496 } |
| 493 content::RenderWidgetHostView* view = render_view_host->GetView(); | 497 content::RenderWidgetHostView* view = render_view_host->GetView(); |
| 494 if (!view) | 498 if (!view) |
| 495 return; | 499 return; |
| 496 | 500 |
| 497 if (!take_screenshot_callback_.is_null()) | 501 if (!take_screenshot_callback_.is_null()) |
| 498 take_screenshot_callback_.Run(render_view_host); | 502 take_screenshot_callback_.Run(render_view_host); |
| 499 | 503 |
| 500 skia::PlatformBitmap* temp_bitmap = new skia::PlatformBitmap; | 504 skia::PlatformBitmap* temp_bitmap = new skia::PlatformBitmap; |
| 501 render_view_host->CopyFromBackingStore(gfx::Rect(), | 505 render_view_host->CopyFromBackingStore(gfx::Rect(), |
| 502 view->GetViewBounds().size(), | 506 view->GetViewBounds().size(), |
| (...skipping 17 matching lines...) Expand all Loading... |
| 520 break; | 524 break; |
| 521 } | 525 } |
| 522 } | 526 } |
| 523 | 527 |
| 524 if (!entry) { | 528 if (!entry) { |
| 525 LOG(ERROR) << "Invalid entry with unique id: " << unique_id; | 529 LOG(ERROR) << "Invalid entry with unique id: " << unique_id; |
| 526 return; | 530 return; |
| 527 } | 531 } |
| 528 | 532 |
| 529 if (!success) { | 533 if (!success) { |
| 530 LOG(ERROR) << "Taking snapshot was unsuccessful for " | |
| 531 << unique_id; | |
| 532 ClearScreenshot(entry); | 534 ClearScreenshot(entry); |
| 533 return; | 535 return; |
| 534 } | 536 } |
| 535 | 537 |
| 536 std::vector<unsigned char> data; | 538 std::vector<unsigned char> data; |
| 537 if (gfx::PNGCodec::EncodeBGRASkBitmap(bitmap->GetBitmap(), true, &data)) { | 539 if (gfx::PNGCodec::EncodeBGRASkBitmap(bitmap->GetBitmap(), true, &data)) { |
| 538 if (!entry->screenshot()) | 540 if (!entry->screenshot()) |
| 539 ++screenshot_count_; | 541 ++screenshot_count_; |
| 540 entry->SetScreenshotPNGData(data); | 542 entry->SetScreenshotPNGData(data); |
| 541 PurgeScreenshotsIfNecessary(); | 543 PurgeScreenshotsIfNecessary(); |
| (...skipping 1225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1767 const base::Callback<base::Time()>& get_timestamp_callback) { | 1769 const base::Callback<base::Time()>& get_timestamp_callback) { |
| 1768 get_timestamp_callback_ = get_timestamp_callback; | 1770 get_timestamp_callback_ = get_timestamp_callback; |
| 1769 } | 1771 } |
| 1770 | 1772 |
| 1771 void NavigationControllerImpl::SetTakeScreenshotCallbackForTest( | 1773 void NavigationControllerImpl::SetTakeScreenshotCallbackForTest( |
| 1772 const base::Callback<void(RenderViewHost*)>& take_screenshot_callback) { | 1774 const base::Callback<void(RenderViewHost*)>& take_screenshot_callback) { |
| 1773 take_screenshot_callback_ = take_screenshot_callback; | 1775 take_screenshot_callback_ = take_screenshot_callback; |
| 1774 } | 1776 } |
| 1775 | 1777 |
| 1776 } // namespace content | 1778 } // namespace content |
| OLD | NEW |