Chromium Code Reviews| Index: content/test/test_frame_navigation_observer.cc |
| diff --git a/content/test/test_frame_navigation_observer.cc b/content/test/test_frame_navigation_observer.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..65c6632100ed941ecaa2f9b8c642981c0b5e5b1a |
| --- /dev/null |
| +++ b/content/test/test_frame_navigation_observer.cc |
| @@ -0,0 +1,74 @@ |
| +// Copyright 2014 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/test/test_frame_navigation_observer.h" |
| + |
| +#include "base/bind.h" |
| +#include "base/message_loop/message_loop.h" |
| +#include "base/run_loop.h" |
| +#include "base/stl_util.h" |
| +#include "content/browser/frame_host/navigation_entry_impl.h" |
| +#include "content/browser/frame_host/render_frame_host_impl.h" |
| +#include "content/browser/renderer_host/render_view_host_impl.h" |
| +#include "content/browser/web_contents/web_contents_impl.h" |
| +#include "content/public/browser/web_contents_observer.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace content { |
| + |
| +TestFrameNavigationObserver::TestFrameNavigationObserver( |
| + RenderFrameHostImpl* render_frame_host, |
| + int number_of_navigations) |
| + : WebContentsObserver(render_frame_host->delegate()->GetAsWebContents()), |
| + render_frame_host_(render_frame_host), |
| + navigation_started_(false), |
| + navigations_completed_(0), |
| + number_of_navigations_(number_of_navigations), |
| + message_loop_runner_(new MessageLoopRunner) { |
| +} |
| + |
| +TestFrameNavigationObserver::TestFrameNavigationObserver( |
| + RenderFrameHostImpl* render_frame_host) |
| + : WebContentsObserver(render_frame_host->delegate()->GetAsWebContents()), |
| + render_frame_host_(render_frame_host), |
| + navigation_started_(false), |
| + navigations_completed_(0), |
| + number_of_navigations_(1), |
| + message_loop_runner_(new MessageLoopRunner) { |
| +} |
| + |
| +TestFrameNavigationObserver::~TestFrameNavigationObserver() { |
| +} |
| + |
| +void TestFrameNavigationObserver::Wait() { |
| + message_loop_runner_->Run(); |
| +} |
| + |
| +void TestFrameNavigationObserver::DidStartProvisionalLoadForFrame( |
| + int64 frame_id, |
| + int64 parent_frame_id, |
| + bool is_main_frame, |
| + const GURL& validated_url, |
| + bool is_error_page, |
| + bool is_iframe_srcdoc, |
| + RenderViewHost* render_view_host) { |
| + if (frame_id == render_frame_host_->GetRoutingID()) { |
|
Charlie Reis
2014/04/24 20:37:50
nit: No braces needed.
nasko
2014/04/24 22:31:12
Done.
|
| + navigation_started_ = true; |
| + } |
| +} |
| + |
| +void TestFrameNavigationObserver::DidNavigateAnyFrame( |
| + const LoadCommittedDetails& details, |
| + const FrameNavigateParams& params) { |
| + if (!navigation_started_) |
| + return; |
| + |
| + ++navigations_completed_; |
| + if (navigations_completed_ == number_of_navigations_) { |
| + navigation_started_ = false; |
| + message_loop_runner_->Quit(); |
| + } |
| +} |
| + |
| +} // namespace content |