@@ -210,6 +210,57 @@ function nextZoomLevel(currentZoom, steps) {
210210 }
211211}
212212
213+ function setProxy ( request , sender , proxy_type ) {
214+ const currentTab = request . tab ;
215+ const tabId = request . tabId ;
216+ const registryEntry = request . registryEntry ;
217+
218+ if ( typeof browser === "undefined" || typeof browser . proxy === "undefined" ) {
219+ chrome . tabs . sendMessage ( tabId , {
220+ frameId : sender . frameId ,
221+ handler : "showMessage" ,
222+ message : "Not supported proxy change"
223+ } ) ;
224+ return ;
225+ }
226+
227+ var getting = browser . proxy . settings . get ( { } ) ;
228+
229+ getting . then ( ( got ) => {
230+ got . value . proxyType = proxy_type ;
231+
232+ var msg ;
233+ if ( proxy_type == "none" )
234+ msg = "None proxy" ;
235+ else if ( proxy_type == "autoDetect" )
236+ msg = "Auto detect proxy" ;
237+ else if ( proxy_type == "system" )
238+ msg = "System proxy" ;
239+ else if ( proxy_type == "manual" )
240+ msg = "Manual proxy: " + got . value . http ;
241+
242+ browser . proxy . settings . set ( { value : got . value } )
243+ . then ( ( res ) => {
244+ if ( res ) {
245+ chrome . tabs . sendMessage ( tabId , {
246+ frameId : sender . frameId ,
247+ handler : "showMessage" ,
248+ message : msg
249+ } ) ;
250+ } else
251+ throw new Error ( ) ;
252+ } )
253+ . catch ( ( err ) => {
254+ chrome . tabs . sendMessage ( tabId , {
255+ frameId : sender . frameId ,
256+ handler : "showMessage" ,
257+ message : "Required private browsing permission"
258+ } ) ;
259+ }
260+ ) ;
261+ } ) ;
262+ }
263+
213264// These are commands which are bound to keystrokes which must be handled by the background page.
214265// They are mapped in commands.js.
215266const BackgroundCommands = {
@@ -411,6 +462,23 @@ const BackgroundCommands = {
411462 chrome . tabs . reload ( tab . id , { bypassCache : true } ) ;
412463 } ) ;
413464 } ,
465+
466+ setProxyNone ( request , sender ) {
467+ setProxy ( request , sender , "none" ) ;
468+ } ,
469+
470+ setProxyAutodetect ( request , sender ) {
471+ setProxy ( request , sender , "autoDetect" ) ;
472+ } ,
473+
474+ setProxySystem ( request , sender ) {
475+ setProxy ( request , sender , "system" ) ;
476+ } ,
477+
478+ setProxyManual ( request , sender ) {
479+ setProxy ( request , sender , "manual" ) ;
480+ } ,
481+
414482} ;
415483
416484async function forCountTabs ( count , currentTab , callback ) {
0 commit comments