pinned_tab_codec.h revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
1f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang// Use of this source code is governed by a BSD-style license that can be 3f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang// found in the LICENSE file. 4f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang 5f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang#ifndef CHROME_BROWSER_UI_TABS_PINNED_TAB_CODEC_H_ 6f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang#define CHROME_BROWSER_UI_TABS_PINNED_TAB_CODEC_H_ 7f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang 8f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang#include <vector> 9f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang 101fdb08e5fc427b54b54214e3b3fbdda73d369f4dDavid Mosberger-Tang#include "chrome/browser/ui/startup/startup_tab.h" 11f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang#include "url/gurl.h" 123842dac7333e42aa44531eda34ba55200b99ccf8Daniel Jacobowitz 133842dac7333e42aa44531eda34ba55200b99ccf8Daniel Jacobowitzclass Profile; 143842dac7333e42aa44531eda34ba55200b99ccf8Daniel Jacobowitz 153842dac7333e42aa44531eda34ba55200b99ccf8Daniel Jacobowitznamespace base { 163842dac7333e42aa44531eda34ba55200b99ccf8Daniel Jacobowitzclass Value; 173842dac7333e42aa44531eda34ba55200b99ccf8Daniel Jacobowitz} 186a5da54b8ac724fc68001a1e07430d910d9e8141Tommi Rantala 196a5da54b8ac724fc68001a1e07430d910d9e8141Tommi Rantalanamespace user_prefs { 20ee8df2628891435ebb95eee04668d5bbd6995723Tommi Rantalaclass PrefRegistrySyncable; 211fdb08e5fc427b54b54214e3b3fbdda73d369f4dDavid Mosberger-Tang} 226a5da54b8ac724fc68001a1e07430d910d9e8141Tommi Rantala 231fdb08e5fc427b54b54214e3b3fbdda73d369f4dDavid Mosberger-Tang// PinnedTabCodec is used to read and write the set of pinned tabs to 246a5da54b8ac724fc68001a1e07430d910d9e8141Tommi Rantala// preferences. When Chrome exits the sets of pinned tabs are written to prefs. 25f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang// On startup if the user has not chosen to restore the last session the set of 26f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang// pinned tabs is opened. 27f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang// 28f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang// The entries are stored in preferences as a list of dictionaries, with each 29f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang// dictionary describing the entry. 30f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tangclass PinnedTabCodec { 313842dac7333e42aa44531eda34ba55200b99ccf8Daniel Jacobowitz public: 32f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang // Registers the preference used by this class. 33f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 34f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang 35f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang // Resets the preferences state. 36f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang static void WritePinnedTabs(Profile* profile); 37f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang 38f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang // Sets the preferences state from the specified tab list. 39f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang static void WritePinnedTabs(Profile* profile, const StartupTabs& tabs); 40f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang 41f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang // Reads and returns the set of pinned tabs to restore from preferences. 42f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang static StartupTabs ReadPinnedTabs(Profile* profile); 433842dac7333e42aa44531eda34ba55200b99ccf8Daniel Jacobowitz static StartupTabs ReadPinnedTabs(const base::Value* value); 44f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang 45f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang private: 46f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang PinnedTabCodec(); 47f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang ~PinnedTabCodec(); 48f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang 493842dac7333e42aa44531eda34ba55200b99ccf8Daniel Jacobowitz DISALLOW_COPY_AND_ASSIGN(PinnedTabCodec); 50f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang}; 51f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang 52f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang#endif // CHROME_BROWSER_UI_TABS_PINNED_TAB_CODEC_H_ 53f176ad6fc6d4982e92c330265b00419e93b79f27David Mosberger-Tang