1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#ifndef CHROME_BROWSER_UI_COCOA_APPLESCRIPT_TAB_APPLESCRIPT_H_
621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#define CHROME_BROWSER_UI_COCOA_APPLESCRIPT_TAB_APPLESCRIPT_H_
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#import <Cocoa/Cocoa.h>
9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#import "chrome/browser/ui/cocoa/applescript/element_applescript.h"
11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass TabContentsWrapper;
13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Represents a tab scriptable item in applescript.
15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen@interface TabAppleScript : ElementAppleScript {
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen @private
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  TabContentsWrapper* tabContents_;  // weak.
18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Contains the temporary URL when a user creates a new folder/item with
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // url specified like
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // |make new tab with properties {url:"http://google.com"}|.
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  NSString* tempURL_;
22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Doesn't actually create the tab here but just assigns the ID, tab is created
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// when it calls insertInTabs: of a particular window, it is used in cases
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// where user assigns a tab to a variable like |set var to make new tab|.
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (id)init;
28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Does not create a new tab but uses an existing one.
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen- (id)initWithTabContent:(TabContentsWrapper*)aTabContent;
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Assigns a tab, sets its unique ID and also copies temporary values.
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen- (void)setTabContent:(TabContentsWrapper*)aTabContent;
34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Return the URL currently visible to the user in the location bar.
36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (NSString*)URL;
37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Sets the URL, returns an error if it is invalid.
39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)setURL:(NSString*)aURL;
40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// The title of the tab.
42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (NSString*)title;
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Is the tab loading any resource?
45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (NSNumber*)loading;
46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Standard user commands.
48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesUndoScriptCommand:(NSScriptCommand*)command;
49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesRedoScriptCommand:(NSScriptCommand*)command;
50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Edit operations on the page.
52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesCutScriptCommand:(NSScriptCommand*)command;
53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesCopyScriptCommand:(NSScriptCommand*)command;
54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesPasteScriptCommand:(NSScriptCommand*)command;
55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Selects all contents on the page.
57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesSelectAllScriptCommand:(NSScriptCommand*)command;
58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Navigation operations.
60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesGoBackScriptCommand:(NSScriptCommand*)command;
61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesGoForwardScriptCommand:(NSScriptCommand*)command;
62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesReloadScriptCommand:(NSScriptCommand*)command;
63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesStopScriptCommand:(NSScriptCommand*)command;
64bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
65bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Used to print a tab.
66bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesPrintScriptCommand:(NSScriptCommand*)command;
67bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
68bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Used to save a tab, if no file is specified, prompts the user to enter it.
69bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesSaveScriptCommand:(NSScriptCommand*)command;
70bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
71bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Displays the HTML of the tab in a new tab.
72bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)handlesViewSourceScriptCommand:(NSScriptCommand*)command;
73bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
74bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Executes a piece of javascript in the tab.
75bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (id)handlesExecuteJavascriptScriptCommand:(NSScriptCommand*)command;
76bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
77bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen@end
78bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
7921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif// CHROME_BROWSER_UI_COCOA_APPLESCRIPT_TAB_APPLESCRIPT_H_
80