Skip to content

Commit

Permalink
Chrome 'open tab' reuse an empty tab when possible (facebook#1165)
Browse files Browse the repository at this point in the history
* Reuse empty tab on open chrome apple script

* Break find tab into function

* Use property to store found

* Fix minor issues that caused window to not get active
  • Loading branch information
n3tr authored and randycoulman committed May 8, 2017
1 parent 6930cae commit 1f6319b
Showing 1 changed file with 52 additions and 16 deletions.
68 changes: 52 additions & 16 deletions packages/react-dev-utils/openChrome.applescript
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,70 @@ This source code is licensed under the BSD-style license found in the
of patent rights can be found in the PATENTS file in the same directory.
*)

property targetTab: null
property targetTabIndex: -1
property targetWindow: null

on run argv
set theURL to item 1 of argv

tell application "Chrome"
tell application "Google Chrome"

if (count every window) = 0 then
make new window
end if

-- Find a tab currently running the debugger
-- 1: Looking for tab running debugger
-- then, Reload debugging tab if found
-- then return
set found to my lookupTabWithUrl(theURL)
if found then
set targetWindow's active tab index to targetTabIndex
tell targetTab to reload
tell targetWindow to activate
set index of targetWindow to 1
return
end if

-- 2: Looking for Empty tab
-- In case debugging tab was not found
-- We try to find an empty tab instead
set found to my lookupTabWithUrl("chrome://newtab/")
if found then
set targetWindow's active tab index to targetTabIndex
set URL of targetTab to theURL
tell targetWindow to activate
return
end if

-- 3: Create new tab
-- both debugging and empty tab were not found
-- make a new tab with url
tell window 1
activate
make new tab with properties {URL:theURL}
end tell
end tell
end run

-- Function:
-- Lookup tab with given url
-- if found, store tab, index, and window in properties
-- (properties were declared on top of file)
on lookupTabWithUrl(lookupUrl)
tell application "Google Chrome"
-- Find a tab with the given url
set found to false
set theTabIndex to -1
repeat with theWindow in every window
set theTabIndex to 0
repeat with theTab in every tab of theWindow
set theTabIndex to theTabIndex + 1
if theTab's URL as string contains theURL then
if (theTab's URL as string) contains lookupUrl then
-- assign tab, tab index, and window to properties
set targetTab to theTab
set targetTabIndex to theTabIndex
set targetWindow to theWindow
set found to true
exit repeat
end if
Expand All @@ -33,17 +80,6 @@ on run argv
exit repeat
end if
end repeat

if found then
tell theTab to reload
set index of theWindow to 1
set theWindow's active tab index to theTabIndex
tell theWindow to activate
else
tell window 1
activate
make new tab with properties {URL:theURL}
end tell
end if
end tell
end run
return found
end lookupTabWithUrl

0 comments on commit 1f6319b

Please sign in to comment.