Commit 141714f0 authored by Sergei Datsenko's avatar Sergei Datsenko Committed by Commit Bot

Numerous redirect rendertests.

Check handling of different types of redirects and their combinations.

Bug: chromium:787197
Change-Id: I6548c2802e000a2dd7913bbf1154797312b15361
Reviewed-on: https://chromium-review.googlesource.com/790051Reviewed-by: default avatarAlex Clarke <alexclarke@chromium.org>
Commit-Queue: Sergei Datsenko <dats@chromium.org>
Cr-Commit-Position: refs/heads/master@{#519894}
parent d277e8b9
...@@ -109,16 +109,43 @@ void HeadlessRenderTest::OnLoadEventFired(const page::LoadEventFiredParams&) { ...@@ -109,16 +109,43 @@ void HeadlessRenderTest::OnLoadEventFired(const page::LoadEventFiredParams&) {
} }
void HeadlessRenderTest::OnFrameStartedLoading( void HeadlessRenderTest::OnFrameStartedLoading(
const page::FrameStartedLoadingParams&) { const page::FrameStartedLoadingParams& params) {
CHECK_NE(INIT, state_); CHECK_NE(INIT, state_);
if (state_ == STARTING) { if (state_ == STARTING) {
state_ = LOADING; state_ = LOADING;
main_frame_ = params.GetFrameId();
virtual_time_controller_->GrantVirtualTimeBudget( virtual_time_controller_->GrantVirtualTimeBudget(
emulation::VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING, emulation::VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING,
base::TimeDelta::FromMilliseconds(5000), base::Closure(), base::TimeDelta::FromMilliseconds(5000), base::Closure(),
base::Bind(&HeadlessRenderTest::HandleVirtualTimeExhausted, base::Bind(&HeadlessRenderTest::HandleVirtualTimeExhausted,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
} }
auto it = unconfirmed_frame_redirects_.find(params.GetFrameId());
if (it != unconfirmed_frame_redirects_.end()) {
confirmed_frame_redirects_[params.GetFrameId()].push_back(it->second);
unconfirmed_frame_redirects_.erase(it);
}
}
void HeadlessRenderTest::OnFrameScheduledNavigation(
const page::FrameScheduledNavigationParams& params) {
CHECK(unconfirmed_frame_redirects_.find(params.GetFrameId()) ==
unconfirmed_frame_redirects_.end());
unconfirmed_frame_redirects_[params.GetFrameId()] =
Redirect(params.GetUrl(), params.GetReason());
}
void HeadlessRenderTest::OnFrameClearedScheduledNavigation(
const page::FrameClearedScheduledNavigationParams& params) {
auto it = unconfirmed_frame_redirects_.find(params.GetFrameId());
if (it != unconfirmed_frame_redirects_.end())
unconfirmed_frame_redirects_.erase(it);
}
void HeadlessRenderTest::OnFrameNavigated(
const page::FrameNavigatedParams& params) {
frames_[params.GetFrame()->GetId()].push_back(params.GetFrame()->Clone());
} }
void HeadlessRenderTest::OnRequest(const GURL& url, void HeadlessRenderTest::OnRequest(const GURL& url,
......
...@@ -34,6 +34,8 @@ class HeadlessRenderTest : public HeadlessAsyncDevTooledBrowserTest, ...@@ -34,6 +34,8 @@ class HeadlessRenderTest : public HeadlessAsyncDevTooledBrowserTest,
public page::ExperimentalObserver, public page::ExperimentalObserver,
public TestInMemoryProtocolHandler::RequestDeferrer { public TestInMemoryProtocolHandler::RequestDeferrer {
public: public:
typedef std::pair<std::string, page::FrameScheduledNavigationReason> Redirect;
void RunDevTooledTest() override; void RunDevTooledTest() override;
protected: protected:
...@@ -92,10 +94,20 @@ class HeadlessRenderTest : public HeadlessAsyncDevTooledBrowserTest, ...@@ -92,10 +94,20 @@ class HeadlessRenderTest : public HeadlessAsyncDevTooledBrowserTest,
void OnLoadEventFired(const page::LoadEventFiredParams& params) override; void OnLoadEventFired(const page::LoadEventFiredParams& params) override;
void OnFrameStartedLoading( void OnFrameStartedLoading(
const page::FrameStartedLoadingParams& params) override; const page::FrameStartedLoadingParams& params) override;
void OnFrameScheduledNavigation(
const page::FrameScheduledNavigationParams& params) override;
void OnFrameClearedScheduledNavigation(
const page::FrameClearedScheduledNavigationParams& params) override;
void OnFrameNavigated(const page::FrameNavigatedParams& params) override;
// TestInMemoryProtocolHandler::RequestDeferrer // TestInMemoryProtocolHandler::RequestDeferrer
void OnRequest(const GURL& url, base::Closure complete_request) override; void OnRequest(const GURL& url, base::Closure complete_request) override;
std::map<std::string, std::vector<Redirect>> confirmed_frame_redirects_;
std::map<std::string, Redirect> unconfirmed_frame_redirects_;
std::map<std::string, std::vector<std::unique_ptr<page::Frame>>> frames_;
std::string main_frame_;
private: private:
void HandleVirtualTimeExhausted(); void HandleVirtualTimeExhausted();
void OnGetDomSnapshotDone( void OnGetDomSnapshotDone(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment