1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_BROWSER_WINDOW_STATE_H_ 6#define CHROME_BROWSER_UI_BROWSER_WINDOW_STATE_H_ 7 8#include <string> 9 10#include "base/memory/scoped_ptr.h" 11#include "base/prefs/scoped_user_pref_update.h" 12#include "ui/base/ui_base_types.h" 13 14class Browser; 15 16namespace base { 17class DictionaryValue; 18} 19 20namespace gfx { 21class Rect; 22} 23 24class PrefService; 25 26namespace chrome { 27 28std::string GetWindowName(const Browser* browser); 29// A "window placement dictionary" holds information about the size and location 30// of the window that is stored in the given PrefService. If the window_name 31// isn't the name of a registered preference it is assumed to be the name of an 32// app and the AppWindowPlacement key is used to find the app's dictionary. 33scoped_ptr<DictionaryPrefUpdate> GetWindowPlacementDictionaryReadWrite( 34 const std::string& window_name, 35 PrefService* prefs); 36// Returns NULL if the window corresponds to an app that doesn't have placement 37// information stored in the preferences system. 38const base::DictionaryValue* GetWindowPlacementDictionaryReadOnly( 39 const std::string& window_name, 40 PrefService* prefs); 41 42bool ShouldSaveWindowPlacement(const Browser* browser); 43 44void SaveWindowPlacement(const Browser* browser, 45 const gfx::Rect& bounds, 46 ui::WindowShowState show_state); 47 48// Return the |bounds| for the browser window to be used upon creation. 49// The |show_state| variable will receive the desired initial show state for 50// the window. 51void GetSavedWindowBoundsAndShowState(const Browser* browser, 52 gfx::Rect* bounds, 53 ui::WindowShowState* show_state); 54 55} // namespace chrome 56 57#endif // CHROME_BROWSER_UI_BROWSER_WINDOW_STATE_H_ 58