|
| 1 | +(* |
| 2 | +Copyright (c) 2015-present, Facebook, Inc. |
| 3 | +
|
| 4 | +This source code is licensed under the MIT license found in the |
| 5 | +LICENSE file in the root directory of this source tree. |
| 6 | +*) |
| 7 | + |
| 8 | +property targetTab: null |
| 9 | +property targetTabIndex: -1 |
| 10 | +property targetWindow: null |
| 11 | + |
| 12 | +on run argv |
| 13 | + set theURL to item 1 of argv |
| 14 | + |
| 15 | + tell application "Chrome" |
| 16 | + |
| 17 | + if (count every window) = 0 then |
| 18 | + make new window |
| 19 | + end if |
| 20 | + |
| 21 | + -- 1: Looking for tab running debugger |
| 22 | + -- then, Reload debugging tab if found |
| 23 | + -- then return |
| 24 | + set found to my lookupTabWithUrl(theURL) |
| 25 | + if found then |
| 26 | + set targetWindow's active tab index to targetTabIndex |
| 27 | + tell targetTab to reload |
| 28 | + tell targetWindow to activate |
| 29 | + set index of targetWindow to 1 |
| 30 | + return |
| 31 | + end if |
| 32 | + |
| 33 | + -- 2: Looking for Empty tab |
| 34 | + -- In case debugging tab was not found |
| 35 | + -- We try to find an empty tab instead |
| 36 | + set found to my lookupTabWithUrl("chrome://newtab/") |
| 37 | + if found then |
| 38 | + set targetWindow's active tab index to targetTabIndex |
| 39 | + set URL of targetTab to theURL |
| 40 | + tell targetWindow to activate |
| 41 | + return |
| 42 | + end if |
| 43 | + |
| 44 | + -- 3: Create new tab |
| 45 | + -- both debugging and empty tab were not found |
| 46 | + -- make a new tab with url |
| 47 | + tell window 1 |
| 48 | + activate |
| 49 | + make new tab with properties {URL:theURL} |
| 50 | + end tell |
| 51 | + end tell |
| 52 | +end run |
| 53 | + |
| 54 | +-- Function: |
| 55 | +-- Lookup tab with given url |
| 56 | +-- if found, store tab, index, and window in properties |
| 57 | +-- (properties were declared on top of file) |
| 58 | +on lookupTabWithUrl(lookupUrl) |
| 59 | + tell application "Chrome" |
| 60 | + -- Find a tab with the given url |
| 61 | + set found to false |
| 62 | + set theTabIndex to -1 |
| 63 | + repeat with theWindow in every window |
| 64 | + set theTabIndex to 0 |
| 65 | + repeat with theTab in every tab of theWindow |
| 66 | + set theTabIndex to theTabIndex + 1 |
| 67 | + if (theTab's URL as string) contains lookupUrl then |
| 68 | + -- assign tab, tab index, and window to properties |
| 69 | + set targetTab to theTab |
| 70 | + set targetTabIndex to theTabIndex |
| 71 | + set targetWindow to theWindow |
| 72 | + set found to true |
| 73 | + exit repeat |
| 74 | + end if |
| 75 | + end repeat |
| 76 | + |
| 77 | + if found then |
| 78 | + exit repeat |
| 79 | + end if |
| 80 | + end repeat |
| 81 | + end tell |
| 82 | + return found |
| 83 | +end lookupTabWithUrl |
0 commit comments