|  | // Copyright 2015 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. | 
|  |  | 
|  | #ifndef CHROME_BROWSER_UI_CHROME_BUBBLE_MANAGER_H_ | 
|  | #define CHROME_BROWSER_UI_CHROME_BUBBLE_MANAGER_H_ | 
|  |  | 
|  | #include "base/macros.h" | 
|  | #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" | 
|  | #include "components/bubble/bubble_manager.h" | 
|  | #include "content/public/browser/web_contents_observer.h" | 
|  |  | 
|  | class TabStripModel; | 
|  |  | 
|  | class ChromeBubbleManager : public BubbleManager, | 
|  | public TabStripModelObserver, | 
|  | public content::WebContentsObserver { | 
|  | public: | 
|  | explicit ChromeBubbleManager(TabStripModel* tab_strip_model); | 
|  | ~ChromeBubbleManager() override; | 
|  |  | 
|  | // TabStripModelObserver: | 
|  | void OnTabStripModelChanged( | 
|  | TabStripModel* tab_strip_model, | 
|  | const TabStripModelChange& change, | 
|  | const TabStripSelectionChange& selection) override; | 
|  |  | 
|  | // content::WebContentsObserver: | 
|  | void FrameDeleted(content::RenderFrameHost* render_frame_host) override; | 
|  | void DidToggleFullscreenModeForTab(bool entered_fullscreen, | 
|  | bool will_cause_resize) override; | 
|  | void NavigationEntryCommitted( | 
|  | const content::LoadCommittedDetails& load_details) override; | 
|  |  | 
|  | private: | 
|  | class ChromeBubbleMetrics : public BubbleManager::BubbleManagerObserver { | 
|  | public: | 
|  | ChromeBubbleMetrics() {} | 
|  | ~ChromeBubbleMetrics() override {} | 
|  |  | 
|  | // BubbleManager::BubbleManagerObserver: | 
|  | void OnBubbleNeverShown(BubbleReference bubble) override; | 
|  | void OnBubbleClosed(BubbleReference bubble, | 
|  | BubbleCloseReason reason) override; | 
|  |  | 
|  | private: | 
|  | DISALLOW_COPY_AND_ASSIGN(ChromeBubbleMetrics); | 
|  | }; | 
|  |  | 
|  | TabStripModel* tab_strip_model_; | 
|  | ChromeBubbleMetrics chrome_bubble_metrics_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(ChromeBubbleManager); | 
|  | }; | 
|  |  | 
|  | #endif  // CHROME_BROWSER_UI_CHROME_BUBBLE_MANAGER_H_ |