diff options
author | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-05 04:42:00 +0000 |
---|---|---|
committer | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-05 04:42:00 +0000 |
commit | e51c1c51b1e1319d76b6a83d138b7de45641094f (patch) | |
tree | 0b9e805b3c9917b6653f22b0826cccbbb7a5637d /chrome/browser/cocoa/cookie_tree_node.mm | |
parent | 7706e5e3598efb51d021a64f34f2c2d3e390be6f (diff) | |
download | chromium_src-e51c1c51b1e1319d76b6a83d138b7de45641094f.zip chromium_src-e51c1c51b1e1319d76b6a83d138b7de45641094f.tar.gz chromium_src-e51c1c51b1e1319d76b6a83d138b7de45641094f.tar.bz2 |
[Mac] Implement the cookie manager
This CL creates the basic cookie management interface, allowing users to view
and delete cookies from Chromium. TODO: (1) Add the filtering by domain
capability. (2) Localize the NIB.
BUG=15360
TEST=Chromium-->Preferences-->Under the Hood-->Show Cookies. Also covered by unit tests.
Review URL: http://codereview.chromium.org/523025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35512 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/cookie_tree_node.mm')
-rw-r--r-- | chrome/browser/cocoa/cookie_tree_node.mm | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/cookie_tree_node.mm b/chrome/browser/cocoa/cookie_tree_node.mm new file mode 100644 index 0000000..1b1aafe --- /dev/null +++ b/chrome/browser/cocoa/cookie_tree_node.mm @@ -0,0 +1,119 @@ +// Copyright (c) 2009 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. + +#import "chrome/browser/cocoa/cookie_tree_node.h" + +#include "app/l10n_util_mac.h" +#import "base/i18n/time_formatting.h" +#include "base/sys_string_conversions.h" +#include "grit/generated_resources.h" + +@implementation CocoaCookieTreeNode + +- (id)initWithNode:(CookieTreeNode*)node { + if ((self = [super init])) { + DCHECK(node); + treeNode_ = node; + + const int childCount = node->GetChildCount(); + children_.reset([[NSMutableArray alloc] initWithCapacity:childCount]); + for (int i = 0; i < childCount; ++i) { + CookieTreeNode* child = node->GetChild(i); + scoped_nsobject<CocoaCookieTreeNode> childNode( + [[CocoaCookieTreeNode alloc] initWithNode:child]); + [children_ addObject:childNode.get()]; + } + + [self rebuild]; + } + return self; +} + +- (void)rebuild { + title_.reset([base::SysWideToNSString(treeNode_->GetTitle()) retain]); + isCookie_ = NO; + + CookieTreeNode::DetailedInfo info = treeNode_->GetDetailedInfo(); + if (info.node_type == CookieTreeNode::DetailedInfo::TYPE_COOKIE) { + isCookie_ = YES; + net::CookieMonster::CanonicalCookie cookie = info.cookie->second; + + name_.reset([base::SysUTF8ToNSString(cookie.Name()) retain]); + title_.reset([base::SysUTF8ToNSString(cookie.Name()) retain]); + content_.reset([base::SysUTF8ToNSString(cookie.Value()) retain]); + path_.reset([base::SysUTF8ToNSString(cookie.Path()) retain]); + domain_.reset([base::SysWideToNSString(info.origin) retain]); + + if (cookie.DoesExpire()) { + expires_.reset([base::SysWideToNSString( + base::TimeFormatFriendlyDateAndTime(cookie.ExpiryDate())) retain]); + } else { + expires_.reset([l10n_util::GetNSStringWithFixup( + IDS_COOKIES_COOKIE_EXPIRES_SESSION) retain]); + } + + created_.reset([base::SysWideToNSString( + base::TimeFormatFriendlyDateAndTime(cookie.CreationDate())) retain]); + + if (cookie.IsSecure()) { + sendFor_.reset([l10n_util::GetNSStringWithFixup( + IDS_COOKIES_COOKIE_SENDFOR_SECURE) retain]); + } else { + sendFor_.reset([l10n_util::GetNSStringWithFixup( + IDS_COOKIES_COOKIE_SENDFOR_ANY) retain]); + } + } +} + +- (BOOL)isLeaf { + return (treeNode_->GetChildCount() == 0); +} + +- (NSString*)title { + return title_.get(); +} + +- (NSMutableArray*)children { + return children_.get(); +} + +- (TreeModelNode*)treeNode { + return treeNode_; +} + +#pragma mark Cookie Accessors + +- (BOOL)isCookie { + return isCookie_; +} + +- (NSString*)name { + return name_.get(); +} + +- (NSString*)content { + return content_.get(); +} + +- (NSString*)domain { + return domain_.get(); +} + +- (NSString*)path { + return path_.get(); +} + +- (NSString*)sendFor { + return sendFor_.get(); +} + +- (NSString*)created { + return created_.get(); +} + +- (NSString*)expires { + return expires_.get(); +} + +@end |