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_WEBUI_PRINT_PREVIEW_STICKY_SETTINGS_H_ 6 #define CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_STICKY_SETTINGS_H_ 7 8 #include "printing/print_job_constants.h" 9 10 #include <string> 11 12 #include "base/memory/scoped_ptr.h" 13 14 class PrintPreviewHandlerTest; 15 class PrefService; 16 17 namespace base { 18 class DictionaryValue; 19 class FilePath; 20 } 21 22 namespace user_prefs { 23 class PrefRegistrySyncable; 24 } 25 26 namespace printing { 27 28 // Holds all the settings that should be remembered (sticky) in print preview. 29 // A sticky setting will be restored next time the user launches print preview. 30 // Only one instance of this class is instantiated. 31 class StickySettings { 32 public: 33 StickySettings(); 34 ~StickySettings(); 35 36 base::FilePath* save_path(); 37 std::string* printer_app_state(); 38 39 // Stores app state for the last used printer. 40 void StoreAppState(const std::string& app_state); 41 // Stores the last path the user used to save to pdf. 42 void StoreSavePath(const base::FilePath& path); 43 44 void SaveInPrefs(PrefService* profile); 45 void RestoreFromPrefs(PrefService* profile); 46 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 47 48 private: 49 50 scoped_ptr<base::FilePath> save_path_; 51 scoped_ptr<std::string> printer_app_state_; 52 }; 53 54 } // namespace printing 55 56 #endif // CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_STICKY_SETTINGS_H_ 57