diff options
author | sky@google.com <sky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-01 17:36:48 +0000 |
---|---|---|
committer | sky@google.com <sky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-01 17:36:48 +0000 |
commit | 1fcb8b01fe855dde2485b82d620cdaecb580a3bd (patch) | |
tree | 5b626c7f5bb3f1272f1ef4c42b273dd54d4a1cc5 /chrome/browser/bookmark_storage.h | |
parent | 4bc09852839086aef45cea030b5973ea3f197e23 (diff) | |
download | chromium_src-1fcb8b01fe855dde2485b82d620cdaecb580a3bd.zip chromium_src-1fcb8b01fe855dde2485b82d620cdaecb580a3bd.tar.gz chromium_src-1fcb8b01fe855dde2485b82d620cdaecb580a3bd.tar.bz2 |
Adds a backend for the bookmarks bar that reads/writes to a JSON
file. These files aren't being built or used yet (though a test case
exists that is ifdef'd out).
BUG=1256202
TEST=none
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/bookmark_storage.h')
-rw-r--r-- | chrome/browser/bookmark_storage.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/chrome/browser/bookmark_storage.h b/chrome/browser/bookmark_storage.h new file mode 100644 index 0000000..8ba00d0 --- /dev/null +++ b/chrome/browser/bookmark_storage.h @@ -0,0 +1,95 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// BookmarkService handles reading/write the bookmark bar model. The +// BookmarkBarModel uses the BookmarkService to load bookmarks from +// disk, as well as notifying the BookmarkService every time the model +// changes. +// +// Internally BookmarkService uses BookmarkCoded to do the actual read/write. + +// NOTE: This class is currently unsed. The plan is to move bookmarks +// out of the history db using this class and BookmarksCodec instead +// (bug 1256202). + +#ifndef CHROME_BROWSER_BOOKMARK_STORAGE_H_ +#define CHROME_BROWSER_BOOKMARK_STORAGE_H_ + +#include "base/ref_counted.h" +#include "base/task.h" +#include "chrome/browser/browser_process.h" + +class BookmarkBarModel; +class Profile; +class Value; + +namespace { +class BookmarkStorageBackend; +} + +class BookmarkStorage : public base::RefCountedThreadSafe<BookmarkStorage> { + friend class BookmarkStorageBackend; + + public: + // Creates a BookmarkStorage for the specified model + BookmarkStorage(Profile* profile, BookmarkBarModel* model); + + // Loads the bookmarks into the model, notifying the model when done. + void LoadBookmarks(); + + // Schedules saving the bookmark bar model to disk. + void ScheduleSave(); + + // Notification the bookmark bar model is going to be deleted. If there is + // a pending save, it is saved immediately. + void BookmarkModelDeleted(); + + private: + // Callback from backend with the results of the bookmark file. + void LoadedBookmarks(Value* root_value); + + // Schedules a save on the backend thread. + void SaveNow(); + + // Returns the thread the backend is run on. + Thread* backend_thread() { return g_browser_process->file_thread(); } + + // The model. The model is NULL once BookmarkModelDeleted has been invoked. + BookmarkBarModel* model_; + + // Used to delay saves. + ScopedRunnableMethodFactory<BookmarkStorage> save_factory_; + + // The backend handles actual reading/writing to disk. + scoped_refptr<BookmarkStorageBackend> backend_; + + DISALLOW_COPY_AND_ASSIGN(BookmarkStorage); +}; + +#endif // CHROME_BROWSER_BOOKMARK_STORAGE_H_ |