Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1694)

Unified Diff: chrome/browser/bookmark_codec.cc

Issue 1868: Moves bookmark related classes into bookmarks directory. There are no... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/bookmark_codec.h ('k') | chrome/browser/bookmark_drag_data.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/bookmark_codec.cc
===================================================================
--- chrome/browser/bookmark_codec.cc (revision 1903)
+++ chrome/browser/bookmark_codec.cc (working copy)
@@ -1,195 +0,0 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/bookmark_codec.h"
-
-#include "base/string_util.h"
-#include "base/values.h"
-#include "chrome/browser/bookmark_bar_model.h"
-#include "googleurl/src/gurl.h"
-
-#include "generated_resources.h"
-
-// Key names.
-static const wchar_t* kRootsKey = L"roots";
-static const wchar_t* kRootFolderNameKey = L"bookmark_bar";
-static const wchar_t* kOtherBookmarFolderNameKey = L"other";
-static const wchar_t* kVersionKey = L"version";
-static const wchar_t* kTypeKey = L"type";
-static const wchar_t* kNameKey = L"name";
-static const wchar_t* kDateAddedKey = L"date_added";
-static const wchar_t* kURLKey = L"url";
-static const wchar_t* kDateModifiedKey = L"date_modified";
-static const wchar_t* kChildrenKey = L"children";
-
-// Possible values for kTypeKey.
-static const wchar_t* kTypeURL = L"url";
-static const wchar_t* kTypeFolder = L"folder";
-
-// Current version of the file.
-static const int kCurrentVersion = 1;
-
-Value* BookmarkCodec::Encode(BookmarkBarModel* model) {
- return Encode(model->GetBookmarkBarNode(), model->other_node());
-}
-
-Value* BookmarkCodec::Encode(BookmarkBarNode* bookmark_bar_node,
- BookmarkBarNode* other_folder_node) {
- DictionaryValue* roots = new DictionaryValue();
- roots->Set(kRootFolderNameKey, EncodeNode(bookmark_bar_node));
- roots->Set(kOtherBookmarFolderNameKey, EncodeNode(other_folder_node));
-
- DictionaryValue* main = new DictionaryValue();
- main->SetInteger(kVersionKey, kCurrentVersion);
- main->Set(kRootsKey, roots);
- return main;
-}
-
-bool BookmarkCodec::Decode(BookmarkBarModel* model, const Value& value) {
- if (value.GetType() != Value::TYPE_DICTIONARY)
- return false; // Unexpected type.
-
- const DictionaryValue& d_value = static_cast<const DictionaryValue&>(value);
-
- int version;
- if (!d_value.GetInteger(kVersionKey, &version) || version != kCurrentVersion)
- return false; // Unknown version.
-
- Value* roots;
- if (!d_value.Get(kRootsKey, &roots))
- return false; // No roots.
-
- if (roots->GetType() != Value::TYPE_DICTIONARY)
- return false; // Invalid type for roots.
-
- DictionaryValue* roots_d_value = static_cast<DictionaryValue*>(roots);
- Value* root_folder_value;
- Value* other_folder_value;
- if (!roots_d_value->Get(kRootFolderNameKey, &root_folder_value) ||
- root_folder_value->GetType() != Value::TYPE_DICTIONARY ||
- !roots_d_value->Get(kOtherBookmarFolderNameKey, &other_folder_value) ||
- other_folder_value->GetType() != Value::TYPE_DICTIONARY)
- return false; // Invalid type for root folder and/or other folder.
-
- DecodeNode(model, *static_cast<DictionaryValue*>(root_folder_value),
- NULL, model->GetBookmarkBarNode());
- DecodeNode(model, *static_cast<DictionaryValue*>(other_folder_value),
- NULL, model->other_node());
- // Need to reset the type as decoding resets the type to FOLDER. Similarly
- // we need to reset the title as the title is persisted and restored from
- // the file.
- model->GetBookmarkBarNode()->type_ = history::StarredEntry::BOOKMARK_BAR;
- model->other_node()->type_ = history::StarredEntry::OTHER;
- model->GetBookmarkBarNode()->SetTitle(
- l10n_util::GetString(IDS_BOOMARK_BAR_FOLDER_NAME));
- model->other_node()->SetTitle(
- l10n_util::GetString(IDS_BOOMARK_BAR_OTHER_FOLDER_NAME));
- return true;
-}
-
-Value* BookmarkCodec::EncodeNode(BookmarkBarNode* node) {
- DictionaryValue* value = new DictionaryValue();
- value->SetString(kNameKey, node->GetTitle());
- value->SetString(kDateAddedKey,
- Int64ToWString(node->date_added().ToInternalValue()));
- if (node->GetType() == history::StarredEntry::URL) {
- value->SetString(kTypeKey, kTypeURL);
- value->SetString(kURLKey,
- UTF8ToWide(node->GetURL().possibly_invalid_spec()));
- } else {
- value->SetString(kTypeKey, kTypeFolder);
- value->SetString(kDateModifiedKey,
- Int64ToWString(node->date_group_modified().
- ToInternalValue()));
-
- ListValue* child_values = new ListValue();
- value->Set(kChildrenKey, child_values);
- for (int i = 0; i < node->GetChildCount(); ++i)
- child_values->Append(EncodeNode(node->GetChild(i)));
- }
- return value;
-}
-
-bool BookmarkCodec::DecodeChildren(BookmarkBarModel* model,
- const ListValue& child_value_list,
- BookmarkBarNode* parent) {
- for (size_t i = 0; i < child_value_list.GetSize(); ++i) {
- Value* child_value;
- if (!child_value_list.Get(i, &child_value))
- return false;
-
- if (child_value->GetType() != Value::TYPE_DICTIONARY)
- return false;
-
- if (!DecodeNode(model, *static_cast<DictionaryValue*>(child_value), parent,
- NULL)) {
- return false;
- }
- }
- return true;
-}
-
-bool BookmarkCodec::DecodeNode(BookmarkBarModel* model,
- const DictionaryValue& value,
- BookmarkBarNode* parent,
- BookmarkBarNode* node) {
- bool created_node = (node == NULL);
- std::wstring title;
- if (!value.GetString(kNameKey, &title))
- return false;
-
- // TODO(sky): this should be more flexible. Don't hoark if we can't parse it
- // all.
- std::wstring date_added_string;
- if (!value.GetString(kDateAddedKey, &date_added_string))
- return false;
-
- std::wstring type_string;
- if (!value.GetString(kTypeKey, &type_string))
- return false;
-
- if (type_string != kTypeURL && type_string != kTypeFolder)
- return false; // Unknown type.
-
- if (type_string == kTypeURL) {
- std::wstring url_string;
- if (!value.GetString(kURLKey, &url_string))
- return false;
- // TODO(sky): this should ignore the node if not a valid URL.
- if (!node)
- node = new BookmarkBarNode(model, GURL(url_string));
- if (parent)
- parent->Add(parent->GetChildCount(), node);
- node->type_ = history::StarredEntry::URL;
- } else {
- std::wstring last_modified_date;
- if (!value.GetString(kDateModifiedKey, &last_modified_date))
- return false;
-
- Value* child_values;
- if (!value.Get(kChildrenKey, &child_values))
- return false;
-
- if (child_values->GetType() != Value::TYPE_LIST)
- return false;
-
- if (!node)
- node = new BookmarkBarNode(model, GURL());
- node->type_ = history::StarredEntry::USER_GROUP;
- node->date_group_modified_ =
- Time::FromInternalValue(StringToInt64(last_modified_date));
-
- if (parent)
- parent->Add(parent->GetChildCount(), node);
-
- if (!DecodeChildren(model, *static_cast<ListValue*>(child_values), node))
- return false;
- }
-
- node->SetTitle(title);
- node->date_added_ =
- Time::FromInternalValue(StringToInt64(date_added_string));
- return true;
-}
-
« no previous file with comments | « chrome/browser/bookmark_codec.h ('k') | chrome/browser/bookmark_drag_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698