• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2010 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/applescript/bookmark_item_applescript.h"
6
7#include "base/sys_string_conversions.h"
8#include "chrome/browser/bookmarks/bookmark_model.h"
9#include "chrome/browser/profiles/profile_manager.h"
10#import "chrome/browser/ui/cocoa/applescript/error_applescript.h"
11
12@interface BookmarkItemAppleScript()
13@property (nonatomic, copy) NSString* tempURL;
14@end
15
16@implementation BookmarkItemAppleScript
17
18@synthesize tempURL = tempURL_;
19
20- (id)init {
21  if ((self = [super init])) {
22    [self setTempURL:@""];
23  }
24  return self;
25}
26
27- (void)dealloc {
28  [tempURL_ release];
29  [super dealloc];
30}
31
32- (void)setBookmarkNode:(const BookmarkNode*)aBookmarkNode {
33  [super setBookmarkNode:aBookmarkNode];
34  [self setURL:[self tempURL]];
35}
36
37- (NSString*)URL {
38  if (!bookmarkNode_)
39    return tempURL_;
40
41  const GURL& url = bookmarkNode_->GetURL();
42  return base::SysUTF8ToNSString(url.spec());
43}
44
45- (void)setURL:(NSString*)aURL {
46  // If a scripter sets a URL before the node is added, URL is saved at a
47  // temporary location.
48  if (!bookmarkNode_) {
49    [self setTempURL:aURL];
50    return;
51  }
52
53  BookmarkModel* model = [self bookmarkModel];
54  if (!model)
55    return;
56
57  GURL url(base::SysNSStringToUTF8(aURL));
58  if (!url.is_valid()) {
59    AppleScript::SetError(AppleScript::errInvalidURL);
60    return;
61  }
62
63  model->SetURL(bookmarkNode_, url);
64}
65
66@end
67