#ifndef CONTENT_PUBLIC_TEST_TEST_FRAME_NAVIGATION_OBSERVER_H_
#define CONTENT_PUBLIC_TEST_TEST_FRAME_NAVIGATION_OBSERVER_H_
#include "base/run_loop.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/test/browser_test_utils.h"
#include "net/base/net_errors.h"
namespace content {
class TestFrameNavigationObserver : public WebContentsObserver {
public:
explicit TestFrameNavigationObserver(const ToRenderFrameHost& adapter);
TestFrameNavigationObserver(const TestFrameNavigationObserver&) = delete;
TestFrameNavigationObserver& operator=(const TestFrameNavigationObserver&) =
delete;
~TestFrameNavigationObserver() override;
ui::PageTransition transition_type() { return transition_type_.value(); }
const GURL& last_committed_url() { return last_committed_url_; }
void Wait();
void WaitForCommit();
bool last_navigation_succeeded() const { return last_navigation_succeeded_; }
net::Error last_net_error_code() const { return last_net_error_code_; }
bool navigation_started() const { return navigation_started_; }
private:
void DidStartNavigation(NavigationHandle* navigation_handle) override;
void DidFinishNavigation(NavigationHandle* navigation_handle) override;
void DidStopLoading() override;
int frame_tree_node_id_;
bool navigation_started_ = false;
bool has_committed_ = false;
bool wait_for_commit_ = false;
bool last_navigation_succeeded_ = false;
net::Error last_net_error_code_ = net::OK;
absl::optional<ui::PageTransition> transition_type_;
GURL last_committed_url_;
base::RunLoop run_loop_;
};
}
#endif