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 13class Profile; 14 15namespace base { 16class Value; 17} 18 19namespace user_prefs { 20class 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. 30class 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