| Index: content/test/test_navigation_observer.cc
|
| ===================================================================
|
| --- content/test/test_navigation_observer.cc (revision 151499)
|
| +++ content/test/test_navigation_observer.cc (working copy)
|
| @@ -1,151 +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 "content/public/test/test_navigation_observer.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/message_loop.h"
|
| -#include "base/run_loop.h"
|
| -#include "content/public/browser/notification_service.h"
|
| -#include "content/public/browser/notification_types.h"
|
| -#include "content/public/browser/render_view_host_observer.h"
|
| -#include "content/public/test/js_injection_ready_observer.h"
|
| -#include "content/public/test/test_utils.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace content {
|
| -
|
| -// This class observes |render_view_host| and calls OnJsInjectionReady() of
|
| -// |js_injection_ready_observer| when the time is right to inject JavaScript
|
| -// into the page.
|
| -class TestNavigationObserver::RVHOSendJS : public RenderViewHostObserver {
|
| - public:
|
| - RVHOSendJS(RenderViewHost* render_view_host,
|
| - JsInjectionReadyObserver* js_injection_ready_observer)
|
| - : RenderViewHostObserver(render_view_host),
|
| - js_injection_ready_observer_(js_injection_ready_observer) {
|
| - }
|
| -
|
| - private:
|
| - // RenderViewHostObserver implementation.
|
| - virtual void RenderViewHostInitialized() OVERRIDE {
|
| - if (js_injection_ready_observer_)
|
| - js_injection_ready_observer_->OnJsInjectionReady(render_view_host());
|
| - }
|
| -
|
| - JsInjectionReadyObserver* js_injection_ready_observer_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(RVHOSendJS);
|
| -};
|
| -
|
| -TestNavigationObserver::TestNavigationObserver(
|
| - const NotificationSource& source,
|
| - JsInjectionReadyObserver* js_injection_ready_observer,
|
| - int number_of_navigations)
|
| - : navigation_started_(false),
|
| - navigations_completed_(0),
|
| - number_of_navigations_(number_of_navigations),
|
| - js_injection_ready_observer_(js_injection_ready_observer),
|
| - done_(false),
|
| - running_(false) {
|
| - // When javascript injection is requested, register for RenderViewHost
|
| - // creation.
|
| - if (js_injection_ready_observer_) {
|
| - registrar_.Add(this, NOTIFICATION_RENDER_VIEW_HOST_CREATED,
|
| - NotificationService::AllSources());
|
| - }
|
| - RegisterAsObserver(source);
|
| -}
|
| -
|
| -TestNavigationObserver::TestNavigationObserver(
|
| - const NotificationSource& source)
|
| - : navigation_started_(false),
|
| - navigations_completed_(0),
|
| - number_of_navigations_(1),
|
| - js_injection_ready_observer_(NULL),
|
| - done_(false),
|
| - running_(false) {
|
| - RegisterAsObserver(source);
|
| -}
|
| -
|
| -TestNavigationObserver::~TestNavigationObserver() {
|
| -}
|
| -
|
| -void TestNavigationObserver::WaitForObservation(
|
| - const base::Closure& wait_loop_callback,
|
| - const base::Closure& done_callback) {
|
| - if (done_)
|
| - return;
|
| -
|
| - EXPECT_FALSE(running_);
|
| - running_ = true;
|
| - done_callback_ = done_callback;
|
| - wait_loop_callback.Run();
|
| - EXPECT_TRUE(done_);
|
| -}
|
| -
|
| -void TestNavigationObserver::Wait() {
|
| - base::RunLoop run_loop;
|
| - WaitForObservation(
|
| - base::Bind(&base::RunLoop::Run, base::Unretained(&run_loop)),
|
| - content::GetQuitTaskForRunLoop(&run_loop));
|
| -}
|
| -
|
| -TestNavigationObserver::TestNavigationObserver(
|
| - JsInjectionReadyObserver* js_injection_ready_observer,
|
| - int number_of_navigations)
|
| - : navigation_started_(false),
|
| - navigations_completed_(0),
|
| - number_of_navigations_(number_of_navigations),
|
| - js_injection_ready_observer_(js_injection_ready_observer),
|
| - done_(false),
|
| - running_(false) {
|
| - // When javascript injection is requested, register for RenderViewHost
|
| - // creation.
|
| - if (js_injection_ready_observer_) {
|
| - registrar_.Add(this, NOTIFICATION_RENDER_VIEW_HOST_CREATED,
|
| - NotificationService::AllSources());
|
| - }
|
| -}
|
| -
|
| -void TestNavigationObserver::RegisterAsObserver(
|
| - const NotificationSource& source) {
|
| - // Register for events to know when we've finished loading the page and are
|
| - // ready to quit the current message loop to return control back to the
|
| - // waiting test.
|
| - registrar_.Add(this, NOTIFICATION_NAV_ENTRY_COMMITTED, source);
|
| - registrar_.Add(this, NOTIFICATION_LOAD_START, source);
|
| - registrar_.Add(this, NOTIFICATION_LOAD_STOP, source);
|
| -}
|
| -
|
| -void TestNavigationObserver::Observe(
|
| - int type, const NotificationSource& source,
|
| - const NotificationDetails& details) {
|
| - switch (type) {
|
| - case NOTIFICATION_NAV_ENTRY_COMMITTED:
|
| - case NOTIFICATION_LOAD_START:
|
| - navigation_started_ = true;
|
| - break;
|
| - case NOTIFICATION_LOAD_STOP:
|
| - if (navigation_started_ &&
|
| - ++navigations_completed_ == number_of_navigations_) {
|
| - navigation_started_ = false;
|
| - done_ = true;
|
| - if (running_) {
|
| - running_ = false;
|
| - done_callback_.Run();
|
| - }
|
| - }
|
| - break;
|
| - case NOTIFICATION_RENDER_VIEW_HOST_CREATED:
|
| - rvho_send_js_.reset(new RVHOSendJS(
|
| - Source<RenderViewHost>(source).ptr(),
|
| - js_injection_ready_observer_));
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -}
|
| -
|
| -} // namespace content
|
|
|