shailesh17 / chrome-reload

Automatically exported from code.google.com/p/chrome-reload
0 stars 0 forks source link

Background.html error makes elements not load #30

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. Browse to Facebook.com
2. Set refresh Time
3. Elements under your Friends birthdays fail to load

What is the expected output? What do you see instead?
I expected the full page to load so, maybe something such as an auto poker 
could poke someone instantly.  Instead it fails to load the elements like ads 
and the poke section.

What version of the product are you using? On what operating system?
Using Chrome Reload V0.5  on Ubuntu 11.04

Please provide any additional information below.
Chrome Reload reports

"Inspect active views:
background.html
To inspect a popup, right-click the page or browser action's icon and choose 
Inspect popup."

No such pop up exists, when its inspected via the extensions tab it is a blank 
html page, if I click on Resources and the background.html drop down, It shows

"<html>
<head>
<script>

    var tabs = new Array();

    chrome.extension.onConnect.addListener(function(port) {
        if (port.name === 'findReloadTime') {
            port.onMessage.addListener(function(data) {
                if (data.msg === 'getReloadTime') {
                    chrome.tabs.getSelected(null, function(tab) {
                        var tabIsReloaderActive = tabs[tab.id] || false;
                        if (tabIsReloaderActive) {
                            port.postMessage({ms_between_load:tabs[tab.id].ms_between_load, is_random:tabs[tab.id].is_random});
                        }
                    });
                }
            });
        }

    });

    function doReloader(time, isRandom) {
        if (time > 0) {
            chrome.tabs.getSelected(null, function(tab) {

                if (tabs[tab.id] || false) {
                    // if there is already a reloader setup for this tab, cancel it
                    cancelReload(tab.id);
                }

                tabs[tab.id] = new Array();
                tabs[tab.id]['action_url'] = tab.url;
                tabs[tab.id]['ms_between_load'] = time;
                tabs[tab.id]['seconds_to_next_reload'] = time/1000;
                tabs[tab.id]['is_random'] = isRandom;

                chrome.tabs.onUpdated.addListener(onUpdateListener);

                chrome.browserAction.setIcon({path:"icons/KnobLoopOn.png", tabId:tab.id});

                // reload the page
                // timers are set for the next reload (and a display timer) in the page load listener
                doReload(tab.id);
            });

        } else {
            chrome.tabs.getSelected(null, function(tab) {
                cancelReload(tab.id);
            });
        }
    }

    function onUpdateListener(tabId, changeInfo) {
        // Hide the badge text
        chrome.browserAction.setBadgeText({text:'', tabId:tabId});

        var tabIsReloaderActive = (tabs[tabId] || false) && (tabs[tabId].ms_between_load > 0 || false);        
        if (tabIsReloaderActive) {
            // can only get the URL infomation when the page is loading, not when it is complete
            if (changeInfo['status'] === 'loading') {
                // we want to cancel the reloader if they navigate away
                var urlChanged=changeInfo['url'] || false;
                if (urlChanged) {
                    // the URL has changed - presumably by navigation
                    // cancel the reloads
                    cancelReload(tabId);
                } else {
                    // reset the icon (it is cleared when reloaded)
                    chrome.browserAction.setIcon({path:"icons/KnobLoopOn.png", tabId:tabId}); // the icon is reset when the page is reloaded

                    // Cancel the timer display while the tab is reloading
                    cancelDisplayTimer(tabId);

                    // Cancel the reload time (in case the user manually reloaded the page)
                    if (tabs[tabId].reloadTimer || false) {
                        clearTimeout(tabs[tabId].reloadTimer);
                        tabs[tabId].reloadTimer = null;
                    }
                }
            } else if (changeInfo['status'] === 'complete') {
                // page has just completed loading

                // reset the icon (it is cleared when reloaded)
                chrome.browserAction.setIcon({path:"icons/KnobLoopOn.png", tabId:tabId}); // the icon is reset when the page is reloaded

                // if we are using random timouts then we need to reset the time related variables here
                if (tabs[tabId]['is_random']) {
                    var time = Math.floor(Math.random()*1800000);
                    tabs[tabId].ms_between_load = time;

                }

                // reset the timer for the countdown
                tabs[tabId].seconds_to_next_reload = tabs[tabId].ms_between_load/1000;

                // and set the correct countdown text
                setBadgeText(tabId);

                // set a timeout for the next reload
                setupReloadTimer(tabId);

                // make really sure this timeout is cancelled before we add a new one
                cancelDisplayTimer(tabId);

                // setup the reload countdown
                tabs[tabId].displayTimer = window.setInterval(function(tab_id) {
                        tabs[tab_id].seconds_to_next_reload--;
                        setBadgeText(tab_id);
                    }, 1000, tabId);
            }
        }
    }

    function setupReloadTimer(tabId) {
        // be sure to remove any reload timer before we add a new one
        if (tabs[tabId].reloadTimer || false) {
            clearTimeout(tabs[tabId].reloadTimer);
            tabs[tabId].reloadTimer = null;
        }

        // set the reload to occur in ms_between_load milliseconds time
        tabs[tabId].reloadTimer = window.setTimeout(function(tab_id) {
                doReload(tab_id);
            }, tabs[tabId].ms_between_load, tabId);
    }

    function cancelDisplayTimer(tabId) {
        if (tabs[tabId].displayTimer || false) {
            clearTimeout(tabs[tabId].displayTimer);
            tabs[tabId].displayTimer = null;
        }
    }

    function setBadgeText(tab_id) {
        //chrome.browserAction.setBadgeText({text:'p1', tabId:tab_id});

        if (tabs[tab_id].seconds_to_next_reload < 0) {
            // something is wrong! Don't display any text
            chrome.browserAction.setBadgeText({text:String(), tabId:tab_id});
            // cancel the time which is calling this. It will get recreated if the page is auto-reloaded
            cancelDisplayTimer(tab_id);
        } else {
            var badgeText = String(tabs[tab_id].seconds_to_next_reload);

            //var mins = Math.floor(tabs[tab_id].seconds_to_next_reload/60);
            var secs = tabs[tab_id].seconds_to_next_reload%60;
            //if (secs < 10) {
            //    secs = '0' + String(secs);
            //}            
            //badgeText= String(mins) + ':' + String(secs);

            var mins = Math.floor((tabs[tab_id].seconds_to_next_reload/60)%60);
            var hours = Math.floor((tabs[tab_id].seconds_to_next_reload/(60*60))%24);
            var days = Math.floor((tabs[tab_id].seconds_to_next_reload/(60*60*24)));

            // Format
            // The banner fits about 4.5 characters (depending on the character's width)
            if (days > 999) {
                badgeText = 'long'; // it will take long...
            } else if (days > 9) {
                badgeText = String(days) + 'd';
            } else if (days > 0) {
                // The 'h' will not entirely fit on the banner all the time.  Live with it.
                badgeText = String(days) + 'd' + String(hours) + 'h';
            } else if (hours > 0) {
                if (mins < 10) {
                    mins = '0' + String(mins);
                }
                // Blinking ':'
                // Note: The banner uses a variable-width font; both strings have to have the same width
            if (secs % 2) {
                var blinker = ':';
            } else {
                var blinker = ' ';
            }
            badgeText = String(hours) + blinker + String(mins);
            } else {
                    if (secs < 10) {
                        secs = '0' + String(secs);
                }
                badgeText = String(mins) + ':' + String(secs);
            }

            chrome.browserAction.setBadgeText({text:badgeText, tabId:tab_id});
        }
    }

    function cancelReload(tab_id) {
        if (tabs[tab_id].reloadTimer || false) {
            clearTimeout(tabs[tab_id].reloadTimer);
            tabs[tab_id].reloadTimer = null;
        }
        if (tabs[tab_id].displayTimer || false) {
            clearTimeout(tabs[tab_id].displayTimer);
            tabs[tab_id].displayTimer = null;
        }
        tabs[tab_id].ms_between_load = 0;
        tabs[tab_id].seconds_to_next_reload = 0;
        chrome.browserAction.setIcon({path:"icons/KnobLoopOff.png", tabId:tab_id});
        chrome.browserAction.setBadgeText({text:String(), tabId:tab_id});

    }

    function doReload(tab_id) {
        chrome.browserAction.setIcon({path:"icons/KnobLoopOn.png", tabId:tab_id});
        chrome.browserAction.setBadgeText({text:'', tabId:tab_id});

        // need to work out a way to make POST'ed pages reload
        chrome.tabs.update(tab_id, {url: tabs[tab_id].action_url});
        //chrome.tabs.executeScript(tab_id, {code: 'window.location.reload()'});

    }

</script>
</head>
</html>
"

Original issue reported on code.google.com by jaymesdr...@gmail.com on 23 Jul 2011 at 6:05