|  | // Copyright 2024 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "chrome/browser/ui/user_education/browser_user_education_interface.h" | 
|  |  | 
|  | #include "chrome/browser/ui/browser_window/public/browser_window_features.h" | 
|  | #include "chrome/browser/ui/browser_window/public/browser_window_interface.h" | 
|  | #include "components/tabs/public/tab_interface.h" | 
|  | #include "ui/base/unowned_user_data/scoped_unowned_user_data.h" | 
|  | #include "ui/base/unowned_user_data/unowned_user_data_host.h" | 
|  |  | 
|  | DEFINE_USER_DATA(BrowserUserEducationInterface); | 
|  |  | 
|  | BrowserUserEducationInterface::BrowserUserEducationInterface( | 
|  | BrowserWindowInterface* browser) | 
|  | : scoped_unowned_user_data_(browser->GetUnownedUserDataHost(), *this) {} | 
|  | BrowserUserEducationInterface::~BrowserUserEducationInterface() = default; | 
|  |  | 
|  | void BrowserUserEducationInterface::Init(BrowserView*) {} | 
|  | void BrowserUserEducationInterface::TearDown() {} | 
|  |  | 
|  | // static | 
|  | BrowserUserEducationInterface* | 
|  | BrowserUserEducationInterface::MaybeGetForWebContentsInTab( | 
|  | content::WebContents* contents) { | 
|  | auto* const tab = tabs::TabInterface::MaybeGetFromContents(contents); | 
|  | return tab ? From(tab->GetBrowserWindowInterface()) : nullptr; | 
|  | } | 
|  |  | 
|  | // static | 
|  | BrowserUserEducationInterface* BrowserUserEducationInterface::From( | 
|  | BrowserWindowInterface* browser) { | 
|  | return browser ? Get(browser->GetUnownedUserDataHost()) : nullptr; | 
|  | } |