chromium/content/browser/preloading/prerender/prerender_commit_deferring_condition.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_BROWSER_PRELOADING_PRERENDER_PRERENDER_COMMIT_DEFERRING_CONDITION_H_
#define CONTENT_BROWSER_PRELOADING_PRERENDER_PRERENDER_COMMIT_DEFERRING_CONDITION_H_

#include <memory>

#include "base/time/time.h"
#include "content/public/browser/commit_deferring_condition.h"
#include "content/public/browser/web_contents_observer.h"

namespace content {

class NavigationRequest;

// PrerenderCommitDeferringCondition defers a prerender activation with ongoing
// main frame navigation in prerender frame tree. When this happens we wait for
// the ongoing main frame navigation to commit before resuming the prerender
// activation.
//
// This implementation assumes that there are no new navigations happening in
// the main frame during prerender activation i.e., between the ongoing
// navigation commit until the prerender activates.
class PrerenderCommitDeferringCondition : public CommitDeferringCondition,
                                          public WebContentsObserver {};

}  // namespace content

#endif  // CONTENT_BROWSER_PRELOADING_PRERENDER_PRERENDER_COMMIT_DEFERRING_CONDITION_H_