| Index: chrome/browser/automation/automation_tab_helper.cc
|
| diff --git a/chrome/browser/automation/automation_tab_helper.cc b/chrome/browser/automation/automation_tab_helper.cc
|
| deleted file mode 100644
|
| index 4dff248bf1c3f9e4f6598fde748a783341cd3693..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/automation/automation_tab_helper.cc
|
| +++ /dev/null
|
| @@ -1,174 +0,0 @@
|
| -// Copyright (c) 2012 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 "chrome/browser/automation/automation_tab_helper.h"
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "chrome/common/automation_messages.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "ipc/ipc_message.h"
|
| -#include "ipc/ipc_message_macros.h"
|
| -#include "ui/gfx/size.h"
|
| -
|
| -using content::WebContents;
|
| -
|
| -DEFINE_WEB_CONTENTS_USER_DATA_KEY(AutomationTabHelper);
|
| -
|
| -TabEventObserver::TabEventObserver() { }
|
| -
|
| -TabEventObserver::~TabEventObserver() {
|
| - for (size_t i = 0; i < event_sources_.size(); ++i) {
|
| - if (event_sources_[i])
|
| - event_sources_[i]->RemoveObserver(this);
|
| - }
|
| -}
|
| -
|
| -void TabEventObserver::StartObserving(AutomationTabHelper* tab_helper) {
|
| - tab_helper->AddObserver(this);
|
| - event_sources_.push_back(tab_helper->AsWeakPtr());
|
| -}
|
| -
|
| -void TabEventObserver::StopObserving(AutomationTabHelper* tab_helper) {
|
| - tab_helper->RemoveObserver(this);
|
| - EventSourceVector::iterator iter =
|
| - std::find(event_sources_.begin(), event_sources_.end(), tab_helper);
|
| - if (iter != event_sources_.end())
|
| - event_sources_.erase(iter);
|
| -}
|
| -
|
| -AutomationTabHelper::AutomationTabHelper(WebContents* web_contents)
|
| - : content::WebContentsObserver(web_contents),
|
| - is_loading_(false) {
|
| -}
|
| -
|
| -AutomationTabHelper::~AutomationTabHelper() { }
|
| -
|
| -void AutomationTabHelper::AddObserver(TabEventObserver* observer) {
|
| - observers_.AddObserver(observer);
|
| -}
|
| -
|
| -void AutomationTabHelper::RemoveObserver(TabEventObserver* observer) {
|
| - observers_.RemoveObserver(observer);
|
| -}
|
| -
|
| -void AutomationTabHelper::SnapshotEntirePage() {
|
| - Send(new AutomationMsg_SnapshotEntirePage(routing_id()));
|
| -}
|
| -
|
| -#if !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
|
| -void AutomationTabHelper::HeapProfilerDump(const std::string& reason) {
|
| - Send(new AutomationMsg_HeapProfilerDump(routing_id(), reason));
|
| -}
|
| -#endif // !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
|
| -
|
| -bool AutomationTabHelper::has_pending_loads() const {
|
| - return is_loading_ || !pending_client_redirects_.empty();
|
| -}
|
| -
|
| -void AutomationTabHelper::DidStartLoading(
|
| - content::RenderViewHost* render_view_host) {
|
| - if (is_loading_) {
|
| - // DidStartLoading is often called twice. Once when the renderer sends a
|
| - // load start message, and once when the browser calls it directly as a
|
| - // result of some user-initiated navigation.
|
| - VLOG(1) << "Received DidStartLoading while loading already started.";
|
| - return;
|
| - }
|
| - bool had_pending_loads = has_pending_loads();
|
| - is_loading_ = true;
|
| - if (!had_pending_loads) {
|
| - FOR_EACH_OBSERVER(TabEventObserver, observers_,
|
| - OnFirstPendingLoad(web_contents()));
|
| - }
|
| -}
|
| -
|
| -void AutomationTabHelper::DidStopLoading(
|
| - content::RenderViewHost* render_view_host) {
|
| - if (!is_loading_) {
|
| - LOG(WARNING) << "Received DidStopLoading while loading already stopped.";
|
| - return;
|
| - }
|
| - is_loading_ = false;
|
| - if (!has_pending_loads()) {
|
| - FOR_EACH_OBSERVER(TabEventObserver, observers_,
|
| - OnNoMorePendingLoads(web_contents()));
|
| - }
|
| -}
|
| -
|
| -void AutomationTabHelper::RenderViewGone(base::TerminationStatus status) {
|
| - OnTabOrRenderViewDestroyed(web_contents());
|
| -}
|
| -
|
| -void AutomationTabHelper::WebContentsDestroyed(WebContents* web_contents) {
|
| - OnTabOrRenderViewDestroyed(web_contents);
|
| -}
|
| -
|
| -void AutomationTabHelper::OnTabOrRenderViewDestroyed(
|
| - WebContents* web_contents) {
|
| - if (has_pending_loads()) {
|
| - is_loading_ = false;
|
| - pending_client_redirects_.clear();
|
| - FOR_EACH_OBSERVER(TabEventObserver, observers_,
|
| - OnNoMorePendingLoads(web_contents));
|
| - }
|
| -}
|
| -
|
| -void AutomationTabHelper::OnSnapshotEntirePageACK(
|
| - bool success,
|
| - const std::vector<unsigned char>& png_data,
|
| - const std::string& error_msg) {
|
| - FOR_EACH_OBSERVER(TabEventObserver, observers_,
|
| - OnSnapshotEntirePageACK(success, png_data, error_msg));
|
| -}
|
| -
|
| -bool AutomationTabHelper::OnMessageReceived(const IPC::Message& message) {
|
| - bool handled = true;
|
| - bool msg_is_good = true;
|
| - IPC_BEGIN_MESSAGE_MAP_EX(AutomationTabHelper, message, msg_is_good)
|
| - IPC_MESSAGE_HANDLER(AutomationMsg_SnapshotEntirePageACK,
|
| - OnSnapshotEntirePageACK)
|
| - IPC_MESSAGE_HANDLER(AutomationMsg_WillPerformClientRedirect,
|
| - OnWillPerformClientRedirect)
|
| - IPC_MESSAGE_HANDLER(AutomationMsg_DidCompleteOrCancelClientRedirect,
|
| - OnDidCompleteOrCancelClientRedirect)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP_EX()
|
| - if (!msg_is_good) {
|
| - LOG(ERROR) << "Failed to deserialize an IPC message";
|
| - }
|
| - return handled;
|
| -}
|
| -
|
| -void AutomationTabHelper::OnWillPerformClientRedirect(
|
| - int64 frame_id, double delay_seconds) {
|
| - // Ignore all non-zero delays.
|
| - // TODO(kkania): Handle timed redirects.
|
| - if (delay_seconds > 0) {
|
| - LOG(WARNING) << "Ignoring timed redirect scheduled for " << delay_seconds
|
| - << " seconds later. Will not wait for the redirect to occur";
|
| - return;
|
| - }
|
| -
|
| - bool first_pending_load = !has_pending_loads();
|
| - pending_client_redirects_.insert(frame_id);
|
| - if (first_pending_load) {
|
| - FOR_EACH_OBSERVER(TabEventObserver, observers_,
|
| - OnFirstPendingLoad(web_contents()));
|
| - }
|
| -}
|
| -
|
| -void AutomationTabHelper::OnDidCompleteOrCancelClientRedirect(int64 frame_id) {
|
| - std::set<int64>::iterator iter =
|
| - pending_client_redirects_.find(frame_id);
|
| - // It is possible that we did not track the redirect becasue it had a non-zero
|
| - // delay. See the comment in |OnWillPerformClientRedirect|.
|
| - if (iter != pending_client_redirects_.end()) {
|
| - pending_client_redirects_.erase(iter);
|
| - if (!has_pending_loads()) {
|
| - FOR_EACH_OBSERVER(TabEventObserver, observers_,
|
| - OnNoMorePendingLoads(web_contents()));
|
| - }
|
| - }
|
| -}
|
|
|