- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / content_settings / cookie_tree_node.mm
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "chrome/browser/ui/cocoa/content_settings/cookie_tree_node.h"
6
7 #include "base/strings/sys_string_conversions.h"
8
9 @implementation CocoaCookieTreeNode
10
11 - (id)initWithNode:(CookieTreeNode*)node {
12   if ((self = [super init])) {
13     DCHECK(node);
14     treeNode_ = node;
15     [self rebuild];
16   }
17   return self;
18 }
19
20 - (void)rebuild {
21   title_.reset([base::SysUTF16ToNSString(treeNode_->GetTitle()) retain]);
22   children_.reset();
23   // The tree node assumes ownership of the cookie details object
24   details_.reset([[CocoaCookieDetails createFromCookieTreeNode:(treeNode_)]
25       retain]);
26 }
27
28 - (NSString*)title {
29   return title_.get();
30 }
31
32 - (CocoaCookieDetailsType)nodeType {
33   return [details_.get() type];
34 }
35
36 - (ui::TreeModelNode*)treeNode {
37   return treeNode_;
38 }
39
40 - (NSMutableArray*)mutableChildren {
41   if (!children_.get()) {
42     const int childCount = treeNode_->child_count();
43     children_.reset([[NSMutableArray alloc] initWithCapacity:childCount]);
44     for (int i = 0; i < childCount; ++i) {
45       CookieTreeNode* child = treeNode_->GetChild(i);
46       base::scoped_nsobject<CocoaCookieTreeNode> childNode(
47           [[CocoaCookieTreeNode alloc] initWithNode:child]);
48       [children_ addObject:childNode.get()];
49     }
50   }
51   return children_.get();
52 }
53
54 - (NSArray*)children {
55   return [self mutableChildren];
56 }
57
58 - (BOOL)isLeaf {
59   return [self nodeType] != kCocoaCookieDetailsTypeFolder;
60 };
61
62 - (NSString*)description {
63   NSString* format =
64       @"<CocoaCookieTreeNode @ %p (title=%@, nodeType=%d, childCount=%u)";
65   return [NSString stringWithFormat:format, self, [self title],
66       [self nodeType], [[self children] count]];
67 }
68
69 - (CocoaCookieDetails*)details {
70   return details_;
71 }
72
73 @end