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

#ifndef CHROME_BROWSER_UI_TAB_HELPERS_H_
#define CHROME_BROWSER_UI_TAB_HELPERS_H_

#include "build/build_config.h"

#if BUILDFLAG(IS_ANDROID)

namespace android {
class TabWebContentsDelegateAndroid;
}

namespace thin_webview {
namespace android {
class ChromeThinWebViewInitializer;
}
}  // namespace thin_webview

#else

namespace chrome {
class BrowserTabStripModelDelegate;
}  // namespace chrome

class PreviewTab;

#endif  // BUILDFLAG(IS_ANDROID)

namespace content {
class WebContents;
}

namespace prerender {
class ChromeNoStatePrefetchContentsDelegate;
}

namespace tabs {
class TabModel;
}  // namespace tabs

// A "tab contents" is a WebContents that is used as a tab in a browser window
// (or the equivalent on Android). The TabHelpers class allows specific classes
// to attach the set of tab helpers that is used for tab contents.
//
// https://chromium.googlesource.com/chromium/src/+/main/docs/tab_helpers.md
//
// WARNING: Do not use this class for desktop chrome. Use TabFeatures instead.
// WARNING: For Android, consider using TabFeatures instead of this class.
// See
// https://chromium.googlesource.com/chromium/src/+/main/docs/chrome_browser_design_principles.md

class TabHelpers {
 private:
#if BUILDFLAG(IS_ANDROID)
  // ThinWebView is used to host WebContents on non-tab UIs in Android. Most
  // clients of ThinWebView will need a major subset of the tab helpers.
  friend class thin_webview::android::ChromeThinWebViewInitializer;

  friend class TabAndroid;
  friend class android::TabWebContentsDelegateAndroid;
#else
  friend class Browser;
  friend class chrome::BrowserTabStripModelDelegate;
  friend class tabs::TabModel;
#endif  // BUILDFLAG(IS_ANDROID)

  // chrome::Navigate creates WebContents that are destined for the tab strip,
  // and that might have WebUI that immediately calls back into random tab
  // helpers.
  friend class BrowserNavigatorWebContentsAdoption;

  // NoStatePrefetch and Prerendering load pages that have arbitrary external
  // content; they need the full set of tab helpers to deal with it.
  friend class prerender::ChromeNoStatePrefetchContentsDelegate;
  friend class PrerenderWebContentsDelegateImpl;

  // Link Preview shows a preview of a page, then promote it as a new tab.
  friend class PreviewTab;

  // FYI: Do NOT add any more friends here. The functions above are the ONLY
  // ones that need to call AttachTabHelpers; if you think you do, re-read the
  // design document linked above, especially the section "Reusing tab helpers".

  // Adopts the specified WebContents as a full-fledged browser tab, attaching
  // all the associated tab helpers that are needed for the WebContents to
  // serve in that role. It is safe to call this on a WebContents that was
  // already adopted.
  static void AttachTabHelpers(content::WebContents* web_contents);
};

#endif  // CHROME_BROWSER_UI_TAB_HELPERS_H_
