Created
November 28, 2012 14:10
-
-
Save robcee/4161551 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* This Scratchpad will poll the Google Play Store every hour and | |
* look for the words "Sold Out" in their banner div. If they're | |
* not there, you'll get an alert that it's in! | |
* | |
* This Scratchpad needs to run in Browser Context! | |
* https://developer.mozilla.org/en-US/docs/Tools/Scratchpad#Using_Scratchpad_to_access_Firefox_internals | |
*/ | |
var duration = 1000 * 60 * 60; // ms * sec * min = 1 hour | |
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] | |
.getService(Components.interfaces.nsIPromptService); | |
var URL = "https://play.google.com/store/devices/details?id=nexus_4_16gb"; | |
// find our tab | |
var tab = gBrowser.browsers.filter(function (browser) { | |
return browser.contentDocument.location.href == URL; | |
})[0]; | |
// open if necessary | |
if (!tab) { | |
gBrowser.selectedTab = gBrowser.addTab(URL); | |
var tab = gBrowser.selectedBrowser; // grab the browser element | |
} | |
// create an nsIWebProgressListener to track state change | |
var listener = { | |
QueryInterface: function(aIID) { | |
if (aIID.equals(Components.interfaces.nsIWebProgressListener) || | |
aIID.equals(Components.interfaces.nsISupportsWeakReference) || | |
aIID.equals(Components.interfaces.nsISupports)) | |
return this; | |
throw Components.results.NS_NOINTERFACE; | |
}, | |
runCount: 0, | |
onStateChange: function _onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { | |
// we're stopped, we should have what we need | |
listener.runCount++; | |
if (aStateFlags && Ci.nsIWebProgressListener.STATE_STOP) { | |
tab.removeProgressListener(listener); | |
let node = tab.contentDocument.querySelector("div.doc-banner-container"); | |
if (node && !/Sold out/.test(node.innerHTML)) | |
promptService.alert(this, "Surprise!", "It's Here!"); | |
else | |
window.setTimeout(tester, duration); | |
} | |
} | |
}; | |
function tester() { | |
tab.addProgressListener(listener, Ci.nsIWebProgress.NOTIFY_STATE_WINDOW); | |
tab.reload(); | |
} | |
let timeout = window.setTimeout(tester, 0); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment