15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_TABS_PINNED_TAB_CODEC_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_TABS_PINNED_TAB_CODEC_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/startup/startup_tab.h" 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class Profile; 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Value; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace user_prefs { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefRegistrySyncable; 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// PinnedTabCodec is used to read and write the set of pinned tabs to 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// preferences. When Chrome exits the sets of pinned tabs are written to prefs. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// On startup if the user has not chosen to restore the last session the set of 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// pinned tabs is opened. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The entries are stored in preferences as a list of dictionaries, with each 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// dictionary describing the entry. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PinnedTabCodec { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Registers the preference used by this class. 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Resets the preferences state. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void WritePinnedTabs(Profile* profile); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the preferences state from the specified tab list. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void WritePinnedTabs(Profile* profile, const StartupTabs& tabs); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reads and returns the set of pinned tabs to restore from preferences. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static StartupTabs ReadPinnedTabs(Profile* profile); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static StartupTabs ReadPinnedTabs(const base::Value* value); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PinnedTabCodec(); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~PinnedTabCodec(); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PinnedTabCodec); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_TABS_PINNED_TAB_CODEC_H_ 53