@@ -11,31 +11,14 @@ var redirectURL;
1111var regexSites = [ ] ;
1212var compiledRegexSites = [ ] ;
1313
14- function onBeforeRequestHandler ( info ) {
15- if ( info . url . indexOf ( "?focus_url=" ) != - 1 ) {
16- return { } ;
17- }
18-
19- if ( urlIsBlocked ( info . url , compiledRegexSites , isWhitelist ) ) {
20- if ( enableCloseBrowserTabs ) {
21- chrome . tabs . remove ( info . tabId ) ;
22- } else {
23- var url = redirectURL + "?focus_url=" + encodeURIComponent ( info . url ) ;
24- return { redirectUrl : url } ;
25- }
26- }
27- }
28-
2914function reset ( ) {
3015 isWhitelist = false ;
3116 isFocusing = false ;
3217 regexSites = [ ] ;
3318 compiledRegexSites = [ ] ;
34- vendor . webRequest . onBeforeRequest . removeListener ( onBeforeRequestHandler ) ;
3519}
3620
3721conn . focus = function ( data ) {
38- vendor . webRequest . onBeforeRequest . removeListener ( onBeforeRequestHandler ) ;
3922
4023 regexSites = [ ] ;
4124 compiledRegexSites = [ ] ;
@@ -55,9 +38,10 @@ conn.focus = function(data) {
5538
5639 var filters = { urls : [ "<all_urls>" ] , types : [ "main_frame" , "sub_frame" ] } ;
5740 var extraInfoSpec = [ "blocking" ] ;
58- vendor . webRequest . onBeforeRequest . addListener ( onBeforeRequestHandler , filters , extraInfoSpec ) ;
5941
6042 reloadShouldBeBlockedPages ( compiledRegexSites ) ;
43+
44+ processTabs ( ) ;
6145} ;
6246
6347conn . unfocus = function ( ) {
@@ -73,3 +57,45 @@ conn.cleanup = function() {
7357
7458conn . connect ( ) ;
7559
60+ function handleBeforeNavigate ( navDetails ) {
61+ if ( ! isFocusing ) { return }
62+ //console.log("handleBeforeNavigate");
63+
64+ if ( navDetails . frameId == 0 ) {
65+ checkTabURL ( navDetails . tabId , navDetails . url ) ;
66+ }
67+ }
68+
69+ function processTabs ( ) {
70+ //console.log("processTabs");
71+
72+ browser . tabs . query ( { } , function ( tabs ) {
73+ if ( browser . runtime . lastError ) {
74+ console . log ( "error fetching tabs" , error ) ;
75+ return ;
76+ }
77+
78+ for ( let tab of tabs ) {
79+ checkTabURL ( tab . id , tab . url ) ;
80+ }
81+ } ) ;
82+ }
83+
84+ function checkTabURL ( tabId , url ) {
85+ if ( url . indexOf ( "about:" ) == 0 ) {
86+ return false ;
87+ }
88+
89+ if ( urlIsBlocked ( url , compiledRegexSites , isWhitelist ) ) {
90+ if ( enableCloseBrowserTabs ) {
91+ chrome . tabs . remove ( tabId ) ;
92+ } else {
93+ var newURL = redirectURL + "?focus_url=" + encodeURIComponent ( url ) ;
94+ chrome . tabs . update ( tabId , { url : newURL } ) ;
95+ }
96+ return true ;
97+ }
98+ }
99+
100+ browser . webNavigation . onBeforeNavigate . addListener ( handleBeforeNavigate ) ;
101+
0 commit comments