@@ -66,6 +66,13 @@ function createContextMenu(storedSettings) {
6666 chrome . contextMenus . create ( contextMenuOptions ) ;
6767 }
6868 }
69+ chrome . contextMenus . create ( { parentId : 'Image-Reverse-Search' , type : 'separator' } ) ;
70+ chrome . contextMenus . create ( {
71+ parentId : 'Image-Reverse-Search' ,
72+ id : 'openAll' ,
73+ title : chrome . i18n . getMessage ( 'contextMenuOpenAll' ) ,
74+ contexts : [ 'image' ] ,
75+ } ) ;
6976}
7077
7178/* Default settings. If there is nothing in storage, use these values. */
@@ -96,44 +103,55 @@ function checkStoredSettings(storedSettings) {
96103
97104function reverseSearch ( info , storedSettings ) {
98105 function getTabIndex ( openTabAt , tabs ) {
99- if ( openTabAt == 'right' ) {
100- return tabs [ 0 ] . index + 1 ;
101- } else if ( openTabAt == 'left' ) {
102- return tabs [ 0 ] . index ;
103- } else if ( openTabAt == 'end' ) {
104- return null ;
106+ const thisTab = tabs . filter ( t => t . active ) [ 0 ] ;
107+ if ( openTabAt === 'right' ) {
108+ return thisTab . index + 1 ;
109+ } else if ( openTabAt === 'left' ) {
110+ return thisTab . index ;
111+ } else {
112+ /* openTabAt === 'end' */
113+ return tabs . length ;
105114 }
106115 }
107116
108- function getProviderURL ( targetProviderName ) {
109- for ( const p of storedSettings . storageProviders ) {
110- if ( p . name === targetProviderName ) {
111- return p . url ;
117+ /* return array of url string */
118+ function getProviderURLs ( targetProviderName ) {
119+ if ( targetProviderName === 'openAll' ) {
120+ const urls = [ ] ;
121+ for ( const p of storedSettings . storageProviders ) {
122+ if ( p . selected ) {
123+ urls . push ( p . url ) ;
124+ }
125+ }
126+ /* Reverse for correct order because we insert by tabIndex */
127+ return urls . reverse ( ) ;
128+ } else {
129+ for ( const p of storedSettings . storageProviders ) {
130+ if ( p . name === targetProviderName ) {
131+ return [ p . url ] ;
132+ }
112133 }
113134 }
114135 }
115136
116137 const imageURL = info . srcUrl ;
117138 const openInBackground = storedSettings . openInBackground ;
118139 const openTabAt = storedSettings . openTabAt ;
119- const searchProvider = getProviderURL ( info . menuItemId ) ;
140+ const searchProviders = getProviderURLs ( info . menuItemId ) ;
120141
121142 function openImageSearch ( tabs ) {
122- tabIndex = getTabIndex ( openTabAt , tabs ) ;
123- chrome . tabs . create ( {
124- url : searchProvider . replace ( '%s' , encodeURIComponent ( imageURL ) ) ,
125- active : ! openInBackground ,
126- index : tabIndex ,
127- } ) ;
143+ const tabIndex = getTabIndex ( openTabAt , tabs ) ;
144+
145+ for ( const p of searchProviders ) {
146+ chrome . tabs . create ( {
147+ url : p . replace ( '%s' , encodeURIComponent ( imageURL ) ) ,
148+ active : ! openInBackground ,
149+ index : tabIndex ,
150+ } ) ;
151+ }
128152 }
129153
130- chrome . tabs . query (
131- {
132- currentWindow : true ,
133- active : true ,
134- } ,
135- openImageSearch ,
136- ) ;
154+ chrome . tabs . query ( { currentWindow : true } , openImageSearch ) ;
137155}
138156
139157/* Setup context menu */
0 commit comments