// Copyright 2014 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_FULLSCREEN_FULLSCREEN_WITHIN_TAB_HELPER_H_ #define CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_WITHIN_TAB_HELPER_H_ #include "content/public/browser/web_contents_user_data.h" // Helper used by FullscreenController to track the state of a WebContents that // is in fullscreen mode, but the browser window is not. See // 'FullscreenWithinTab Note' in fullscreen_controller.h. // // The purpose of this class is to associate some fullscreen state at the tab // level rather than at the Browser level. This allows tabs to be // dragged/dropped between Browsers and have their fullscreen state handed off // between FullscreenControllers as well. // // FullscreenWithinTabHelper is created on-demand, and its lifecycle is tied to // that of its associated WebContents. It is automatically destroyed. class FullscreenWithinTabHelper : public content::WebContentsUserData<FullscreenWithinTabHelper> { public: bool is_fullscreen_for_captured_tab() const { return is_fullscreen_for_captured_tab_; } void SetIsFullscreenForCapturedTab(bool is_fullscreen) { is_fullscreen_for_captured_tab_ = is_fullscreen; } // Immediately remove and destroy the FullscreenWithinTabHelper instance // associated with |web_contents|. static void RemoveForWebContents(content::WebContents* web_contents); private: friend class content::WebContentsUserData<FullscreenWithinTabHelper>; explicit FullscreenWithinTabHelper(content::WebContents* ignored); virtual ~FullscreenWithinTabHelper(); bool is_fullscreen_for_captured_tab_; DISALLOW_COPY_AND_ASSIGN(FullscreenWithinTabHelper); }; #endif // CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_WITHIN_TAB_HELPER_H_