Home | History | Annotate | Download | only in applescript
      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