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_TABS_PINNED_TAB_CODEC_H_ 6 #define CHROME_BROWSER_UI_TABS_PINNED_TAB_CODEC_H_ 7 8 #include <vector> 9 10 #include "chrome/browser/ui/startup/startup_tab.h" 11 #include "url/gurl.h" 12 13 class Profile; 14 15 namespace base { 16 class Value; 17 } 18 19 namespace user_prefs { 20 class PrefRegistrySyncable; 21 } 22 23 // PinnedTabCodec is used to read and write the set of pinned tabs to 24 // preferences. When Chrome exits the sets of pinned tabs are written to prefs. 25 // On startup if the user has not chosen to restore the last session the set of 26 // pinned tabs is opened. 27 // 28 // The entries are stored in preferences as a list of dictionaries, with each 29 // dictionary describing the entry. 30 class PinnedTabCodec { 31 public: 32 // Registers the preference used by this class. 33 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 34 35 // Resets the preferences state. 36 static void WritePinnedTabs(Profile* profile); 37 38 // Sets the preferences state from the specified tab list. 39 static void WritePinnedTabs(Profile* profile, const StartupTabs& tabs); 40 41 // Reads and returns the set of pinned tabs to restore from preferences. 42 static StartupTabs ReadPinnedTabs(Profile* profile); 43 static StartupTabs ReadPinnedTabs(const base::Value* value); 44 45 private: 46 PinnedTabCodec(); 47 ~PinnedTabCodec(); 48 49 DISALLOW_COPY_AND_ASSIGN(PinnedTabCodec); 50 }; 51 52 #endif // CHROME_BROWSER_UI_TABS_PINNED_TAB_CODEC_H_ 53