blob: d4547f775617d35f5d4ab1cd2d9ce90a673169c7 [file] [log] [blame]
// Copyright 2020 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/supervised_user/navigation_finished_waiter.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
NavigationFinishedWaiter::NavigationFinishedWaiter(
content::WebContents* web_contents,
int frame_id,
const GURL& url)
: content::WebContentsObserver(web_contents),
frame_id_(frame_id),
url_(url) {}
NavigationFinishedWaiter::NavigationFinishedWaiter(
content::WebContents* web_contents,
const GURL& url)
: content::WebContentsObserver(web_contents) {
frame_id_ = web_contents->GetMainFrame()->GetFrameTreeNodeId();
url_ = url;
}
void NavigationFinishedWaiter::Wait() {
if (did_finish_)
return;
run_loop_.Run();
}
void NavigationFinishedWaiter::DidFinishNavigation(
content::NavigationHandle* navigation_handle) {
if (!navigation_handle->HasCommitted())
return;
if (navigation_handle->GetFrameTreeNodeId() != frame_id_ ||
navigation_handle->GetURL() != url_)
return;
did_finish_ = true;
run_loop_.Quit();
}