| Index: webkit/tools/test_shell/test_navigation_controller.cc
|
| diff --git a/webkit/tools/test_shell/test_navigation_controller.cc b/webkit/tools/test_shell/test_navigation_controller.cc
|
| deleted file mode 100644
|
| index 9d80f581141f80f68e73c89467f9905379d3b2f0..0000000000000000000000000000000000000000
|
| --- a/webkit/tools/test_shell/test_navigation_controller.cc
|
| +++ /dev/null
|
| @@ -1,230 +0,0 @@
|
| -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "webkit/tools/test_shell/test_navigation_controller.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "webkit/tools/test_shell/test_shell.h"
|
| -
|
| -// ----------------------------------------------------------------------------
|
| -// TestNavigationEntry
|
| -
|
| -TestNavigationEntry::TestNavigationEntry()
|
| - : page_id_(-1) {
|
| -}
|
| -
|
| -TestNavigationEntry::TestNavigationEntry(int page_id,
|
| - const GURL& url,
|
| - const base::string16& target_frame)
|
| - : page_id_(page_id),
|
| - url_(url),
|
| - target_frame_(target_frame) {
|
| -}
|
| -
|
| -TestNavigationEntry::~TestNavigationEntry() {
|
| -}
|
| -
|
| -void TestNavigationEntry::SetContentState(const std::string& state) {
|
| - state_ = state;
|
| -}
|
| -
|
| -// ----------------------------------------------------------------------------
|
| -// TestNavigationController
|
| -
|
| -TestNavigationController::TestNavigationController(TestShell* shell)
|
| - : pending_entry_(NULL),
|
| - last_committed_entry_index_(-1),
|
| - pending_entry_index_(-1),
|
| - shell_(shell),
|
| - max_page_id_(-1) {
|
| -}
|
| -
|
| -TestNavigationController::~TestNavigationController() {
|
| - DiscardPendingEntry();
|
| -}
|
| -
|
| -void TestNavigationController::Reset() {
|
| - entries_.clear();
|
| - DiscardPendingEntry();
|
| -
|
| - last_committed_entry_index_ = -1;
|
| -}
|
| -
|
| -void TestNavigationController::Reload() {
|
| - // Base the navigation on where we are now...
|
| - int current_index = GetCurrentEntryIndex();
|
| -
|
| - // If we are no where, then we can't reload. TODO(darin): We should add a
|
| - // CanReload method.
|
| - if (current_index == -1)
|
| - return;
|
| -
|
| - DiscardPendingEntry();
|
| -
|
| - pending_entry_index_ = current_index;
|
| - NavigateToPendingEntry(true);
|
| -}
|
| -
|
| -void TestNavigationController::GoToOffset(int offset) {
|
| - int index = last_committed_entry_index_ + offset;
|
| - if (index < 0 || index >= GetEntryCount())
|
| - return;
|
| -
|
| - GoToIndex(index);
|
| -}
|
| -
|
| -void TestNavigationController::GoToIndex(int index) {
|
| - DCHECK(index >= 0);
|
| - DCHECK(index < static_cast<int>(entries_.size()));
|
| -
|
| - DiscardPendingEntry();
|
| -
|
| - pending_entry_index_ = index;
|
| - NavigateToPendingEntry(false);
|
| -}
|
| -
|
| -void TestNavigationController::LoadEntry(TestNavigationEntry* entry) {
|
| - // When navigating to a new page, we don't know for sure if we will actually
|
| - // end up leaving the current page. The new page load could for example
|
| - // result in a download or a 'no content' response (e.g., a mailto: URL).
|
| - DiscardPendingEntry();
|
| - pending_entry_ = entry;
|
| - NavigateToPendingEntry(false);
|
| -}
|
| -
|
| -
|
| -TestNavigationEntry* TestNavigationController::GetLastCommittedEntry() const {
|
| - if (last_committed_entry_index_ == -1)
|
| - return NULL;
|
| - return entries_[last_committed_entry_index_].get();
|
| -}
|
| -
|
| -TestNavigationEntry* TestNavigationController::GetActiveEntry() const {
|
| - TestNavigationEntry* entry = pending_entry_;
|
| - if (!entry)
|
| - entry = GetLastCommittedEntry();
|
| - return entry;
|
| -}
|
| -
|
| -int TestNavigationController::GetCurrentEntryIndex() const {
|
| - if (pending_entry_index_ != -1)
|
| - return pending_entry_index_;
|
| - return last_committed_entry_index_;
|
| -}
|
| -
|
| -
|
| -TestNavigationEntry* TestNavigationController::GetEntryAtIndex(
|
| - int index) const {
|
| - if (index < 0 || index >= GetEntryCount())
|
| - return NULL;
|
| -
|
| - return entries_[index].get();
|
| -}
|
| -
|
| -TestNavigationEntry* TestNavigationController::GetEntryWithPageID(
|
| - int32 page_id) const {
|
| - int index = GetEntryIndexWithPageID(page_id);
|
| - return (index != -1) ? entries_[index].get() : NULL;
|
| -}
|
| -
|
| -void TestNavigationController::DidNavigateToEntry(TestNavigationEntry* entry) {
|
| - // If the entry is that of a page with PageID larger than any this Tab has
|
| - // seen before, then consider it a new navigation.
|
| - if (entry->GetPageID() > GetMaxPageID()) {
|
| - InsertEntry(entry);
|
| - return;
|
| - }
|
| -
|
| - // Otherwise, we just need to update an existing entry with matching PageID.
|
| - // If the existing entry corresponds to the entry which is pending, then we
|
| - // must update the current entry index accordingly. When navigating to the
|
| - // same URL, a new PageID is not created.
|
| -
|
| - int existing_entry_index = GetEntryIndexWithPageID(entry->GetPageID());
|
| - TestNavigationEntry* existing_entry = (existing_entry_index != -1) ?
|
| - entries_[existing_entry_index].get() : NULL;
|
| - if (!existing_entry) {
|
| - // No existing entry, then simply ignore this navigation!
|
| - DLOG(WARNING) << "ignoring navigation for page: " << entry->GetPageID();
|
| - } else if (existing_entry == pending_entry_) {
|
| - // The given entry might provide a new URL... e.g., navigating back to a
|
| - // page in session history could have resulted in a new client redirect.
|
| - existing_entry->SetURL(entry->GetURL());
|
| - existing_entry->SetContentState(entry->GetContentState());
|
| - last_committed_entry_index_ = pending_entry_index_;
|
| - pending_entry_index_ = -1;
|
| - pending_entry_ = NULL;
|
| - } else if (pending_entry_ && pending_entry_->GetPageID() == -1 &&
|
| - pending_entry_->GetURL() == existing_entry->GetURL()) {
|
| - // Not a new navigation
|
| - DiscardPendingEntry();
|
| - } else {
|
| - // The given entry might provide a new URL... e.g., navigating to a page
|
| - // might result in a client redirect, which should override the URL of the
|
| - // existing entry.
|
| - existing_entry->SetURL(entry->GetURL());
|
| - existing_entry->SetContentState(entry->GetContentState());
|
| -
|
| - // The navigation could have been issued by the renderer, so be sure that
|
| - // we update our current index.
|
| - last_committed_entry_index_ = existing_entry_index;
|
| - }
|
| -
|
| - delete entry;
|
| - UpdateMaxPageID();
|
| -}
|
| -
|
| -void TestNavigationController::DiscardPendingEntry() {
|
| - if (pending_entry_index_ == -1)
|
| - delete pending_entry_;
|
| - pending_entry_ = NULL;
|
| - pending_entry_index_ = -1;
|
| -}
|
| -
|
| -void TestNavigationController::InsertEntry(TestNavigationEntry* entry) {
|
| - DiscardPendingEntry();
|
| -
|
| - // Prune any entry which are in front of the current entry
|
| - int current_size = static_cast<int>(entries_.size());
|
| - if (current_size > 0) {
|
| - while (last_committed_entry_index_ < (current_size - 1)) {
|
| - entries_.pop_back();
|
| - current_size--;
|
| - }
|
| - }
|
| -
|
| - entries_.push_back(linked_ptr<TestNavigationEntry>(entry));
|
| - last_committed_entry_index_ = static_cast<int>(entries_.size()) - 1;
|
| - UpdateMaxPageID();
|
| -}
|
| -
|
| -int TestNavigationController::GetEntryIndexWithPageID(int32 page_id) const {
|
| - for (int i = static_cast<int>(entries_.size())-1; i >= 0; --i) {
|
| - if (entries_[i]->GetPageID() == page_id)
|
| - return i;
|
| - }
|
| - return -1;
|
| -}
|
| -
|
| -void TestNavigationController::NavigateToPendingEntry(bool reload) {
|
| - // For session history navigations only the pending_entry_index_ is set.
|
| - if (!pending_entry_) {
|
| - DCHECK(pending_entry_index_ != -1);
|
| - pending_entry_ = entries_[pending_entry_index_].get();
|
| - }
|
| -
|
| - if (shell_->Navigate(*pending_entry_, reload)) {
|
| - // Note: this is redundant if navigation completed synchronously because
|
| - // DidNavigateToEntry call this as well.
|
| - UpdateMaxPageID();
|
| - } else {
|
| - DiscardPendingEntry();
|
| - }
|
| -}
|
| -
|
| -void TestNavigationController::UpdateMaxPageID() {
|
| - TestNavigationEntry* entry = GetActiveEntry();
|
| - if (entry)
|
| - max_page_id_ = std::max(max_page_id_, entry->GetPageID());
|
| -}
|
|
|