From 6ebec23a85a43cdc734848c9e0b3651a2dc14874 Mon Sep 17 00:00:00 2001 From: Jirat Ki Date: Wed, 7 Dec 2016 00:14:57 +0700 Subject: [PATCH] Chrome 'open tab' reuse an empty tab when possible (#1165) * 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 --- .../react-dev-utils/openChrome.applescript | 68 ++++++++++++++----- 1 file changed, 52 insertions(+), 16 deletions(-) diff --git a/packages/react-dev-utils/openChrome.applescript b/packages/react-dev-utils/openChrome.applescript index b36b70f6cfc..f5d79bb6201 100644 --- a/packages/react-dev-utils/openChrome.applescript +++ b/packages/react-dev-utils/openChrome.applescript @@ -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 @@ -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