blob: 893f70e0ff7015d2128f451b5d75b76c9517ca40 [file] [log] [blame]
// Copyright (c) 2012 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.
#ifndef CHROME_BROWSER_UI_WEBUI_COOKIES_TREE_MODEL_UTIL_H_
#define CHROME_BROWSER_UI_WEBUI_COOKIES_TREE_MODEL_UTIL_H_
#include <stdint.h>
#include <map>
#include <string>
#include "base/id_map.h"
#include "base/macros.h"
class CookieTreeNode;
namespace base {
class DictionaryValue;
class ListValue;
}
class CookiesTreeModelUtil {
public:
CookiesTreeModelUtil();
~CookiesTreeModelUtil();
// Finds or creates an ID for given |node| and returns it as string.
std::string GetTreeNodeId(const CookieTreeNode* node);
// Append the children nodes of |parent| in specified range to |nodes| list.
void GetChildNodeList(const CookieTreeNode* parent,
int start,
int count,
base::ListValue* nodes);
// Gets tree node from |path| under |root|. |path| is comma separated list of
// ids. |id_map| translates ids into object pointers. Return NULL if |path|
// is not valid.
const CookieTreeNode* GetTreeNodeFromPath(const CookieTreeNode* root,
const std::string& path);
private:
typedef IDMap<const CookieTreeNode> CookiesTreeNodeIdMap;
typedef std::map<const CookieTreeNode*, int32_t> CookieTreeNodeMap;
// Populate given |dict| with cookie tree node properties. |id_map| maps
// a CookieTreeNode to an ID and creates a new ID if |node| is not in the
// maps. Returns false if the |node| does not need to be shown.
bool GetCookieTreeNodeDictionary(const CookieTreeNode& node,
base::DictionaryValue* dict);
// IDMap to create unique ID and look up the object for an ID.
CookiesTreeNodeIdMap id_map_;
// Reverse look up map to find the ID for a node.
CookieTreeNodeMap node_map_;
DISALLOW_COPY_AND_ASSIGN(CookiesTreeModelUtil);
};
#endif // CHROME_BROWSER_UI_WEBUI_COOKIES_TREE_MODEL_UTIL_H_