You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							94 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							94 lines
						
					
					
						
							2.6 KiB
						
					
					
				(* | 
						|
Copyright (c) 2015-present, Facebook, Inc. | 
						|
 | 
						|
This source code is licensed under the MIT license found in the | 
						|
LICENSE file in the root directory of this source tree. | 
						|
*) | 
						|
 | 
						|
property targetTab: null | 
						|
property targetTabIndex: -1 | 
						|
property targetWindow: null | 
						|
property theProgram: "Google Chrome" | 
						|
 | 
						|
on run argv | 
						|
  set theURL to item 1 of argv | 
						|
 | 
						|
  -- Allow requested program to be optional, | 
						|
  -- default to Google Chrome | 
						|
  if (count of argv) > 1 then | 
						|
    set theProgram to item 2 of argv | 
						|
  end if | 
						|
 | 
						|
  using terms from application "Google Chrome" | 
						|
    tell application theProgram | 
						|
 | 
						|
      if (count every window) = 0 then | 
						|
        make new window | 
						|
      end if | 
						|
 | 
						|
      -- 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 using terms from | 
						|
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) | 
						|
  using terms from application "Google Chrome" | 
						|
    tell application theProgram | 
						|
      -- 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 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 | 
						|
        end repeat | 
						|
 | 
						|
        if found then | 
						|
          exit repeat | 
						|
        end if | 
						|
      end repeat | 
						|
    end tell | 
						|
  end using terms from | 
						|
  return found | 
						|
end lookupTabWithUrl
 | 
						|
 |