32
32
#define MOZILLA_STRICT_API
33
33
#include "nsISupports.h"
34
34
#include "nsCOMPtr.h"
35
#include "nsComponentManagerUtils.h"
36
#include "nsServiceManagerUtils.h"
37
#include "nsIInterfaceRequestorUtils.h"
38
35
#include "nsIObserver.h"
39
#include "nsIDOMWindow.h"
40
#include "nsIDOMWindowInternal.h"
41
36
#include "nsPIDOMWindow.h"
42
37
#include "nsIEmbeddingSiteWindow.h"
43
38
#include "nsIXPConnect.h"
39
#include "xpcIJSModuleLoader.h"
44
40
#include "nsIDOMEvent.h"
45
41
#include "nsIDOMEventTarget.h"
42
#include "nsPIDOMEventTarget.h"
46
43
#include "nsIDOMEventListener.h"
47
#include "nsIChromeEventHandler.h"
48
44
#include "nsIURI.h"
49
#include "nsIXPCScriptable.h"
50
45
#include "nsIPrefService.h"
51
46
#include "nsIPrefBranch.h"
52
47
#include "nsIConsoleService.h"
53
48
#include "nsIScriptError.h"
54
#include "nsIScriptSecurityManager.h"
55
#include "nsIPrincipal.h"
49
#include "imgIContainer.h"
56
50
#include "imgIRequest.h"
57
51
#include "imgILoader.h"
58
52
#include "imgIDecoderObserver.h"
59
53
#include "gfxIImageFrame.h"
60
54
#include "nsIIOService.h"
61
#include "nsIComponentRegistrar.h"
62
#include "nsIProperties.h"
63
#include "nsDirectoryServiceDefs.h"
64
#include "nsILocalFile.h"
65
55
#include "nsIJSContextStack.h"
67
56
#include "nsEmbedString.h"
59
#include "nsNetUtil.h"
71
61
#define PLUGIN_NAME "Adblock Plus " ABP_VERSION
72
#define ADBLOCKPLUS_CONTRACTID "@mozilla.org/adblockplus;1"
74
enum {CMD_PREFERENCES, CMD_LISTALL, CMD_TOGGLEENABLED, CMD_IMAGE, CMD_OBJECT, CMD_FRAME, CMD_SEPARATOR, CMD_TOOLBAR, CMD_STATUSBAR, NUM_COMMANDS};
75
enum {LABEL_CONTEXT_IMAGE, LABEL_CONTEXT_OBJECT, LABEL_CONTEXT_FRAME, NUM_LABELS};
77
class abpScriptable : public nsIXPCScriptable {
80
NS_DECL_NSIXPCSCRIPTABLE
83
class abpListener : public nsIDOMEventListener {
63
enum {CMD_PREFERENCES, CMD_LISTALL, CMD_TOGGLEENABLED, CMD_REMOVE_WHITELIST, CMD_FRAME, CMD_OBJECT, CMD_MEDIA, CMD_IMAGE, CMD_SEPARATOR, CMD_TOOLBAR, CMD_STATUSBAR, NUM_COMMANDS};
65
class abpListener : public nsIDOMEventListener
86
69
NS_DECL_NSIDOMEVENTLISTENER
89
class abpImgObserver : public imgIDecoderObserver {
72
class abpImgObserver : public imgIDecoderObserver
92
76
NS_DECL_IMGIDECODEROBSERVER
93
77
NS_DECL_IMGICONTAINEROBSERVER
96
class abpJSContextHolder {
80
class abpJSContextHolder
98
83
abpJSContextHolder();
99
84
~abpJSContextHolder();
297
282
// initialization.cpp
298
283
extern abpToolbarDataList toolbarList;
299
284
extern abpStatusBarList statusbarList;
300
extern nsCOMPtr<nsIDOMWindowInternal> fakeBrowserWindow;
301
285
extern WORD cmdBase;
302
extern char labelValues[NUM_LABELS][100];
305
JSObject* GetComponentObject(JSContext* cx);
306
PRBool CreateFakeBrowserWindow(JSContext* cx, JSObject* parent, nsIPrincipal* systemPrincipal);
309
extern JSFunctionSpec window_methods[];
310
extern JSPropertySpec window_properties[];
290
extern JSFunctionSpec module_functions[];
312
JSBool JS_DLL_CALLBACK JSAlert(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
313
JSBool JS_DLL_CALLBACK JSSetIcon(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
314
JSBool JS_DLL_CALLBACK JSHideStatusBar(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
315
JSBool JS_DLL_CALLBACK JSOpenTab(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
316
JSBool JS_DLL_CALLBACK JSResetContextMenu(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
317
JSBool JS_DLL_CALLBACK JSAddContextMenuItem(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
318
JSBool JS_DLL_CALLBACK JSCreateCommandID(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
319
JSBool JS_DLL_CALLBACK JSCreatePopupMenu(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
320
JSBool JS_DLL_CALLBACK JSAddMenuItem(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
321
JSBool JS_DLL_CALLBACK JSGetHWND(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
322
JSBool JS_DLL_CALLBACK JSSubclassDialogWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
323
JSBool JS_DLL_CALLBACK JSAddRootListener(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
324
JSBool JS_DLL_CALLBACK JSRemoveRootListener(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
325
JSBool JS_DLL_CALLBACK JSFocusWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
326
JSBool JS_DLL_CALLBACK JSSetTopmostWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
327
JSBool JS_DLL_CALLBACK JSShowToolbarContext(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
328
JSBool JS_DLL_CALLBACK JSGetScriptable(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
292
static JSBool JSAlert(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
293
static JSBool JSSetIcon(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
294
static JSBool JSHideStatusBar(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
295
static JSBool JSOpenTab(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
296
static JSBool JSResetContextMenu(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
297
static JSBool JSAddContextMenuItem(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
298
static JSBool JSCreateCommandID(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
299
static JSBool JSCreatePopupMenu(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
300
static JSBool JSAddMenuItem(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
301
static JSBool JSGetHWND(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
302
static JSBool JSSubclassDialogWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
303
static JSBool JSAddRootListener(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
304
static JSBool JSRemoveRootListener(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
305
static JSBool JSFocusWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
306
static JSBool JSSetTopmostWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
307
static JSBool JSShowToolbarContext(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
331
JS_STATIC_DLL_CALLBACK(void) Reporter(JSContext *cx, const char *message, JSErrorReport *rep);
310
static void Reporter(JSContext *cx, const char *message, JSErrorReport *rep);
334
313
extern nsCOMPtr<abpListener> listener;
337
JSObject* UnwrapJSObject(nsISupports* native);
316
typedef JSBool (*ArgsInitCallback)(JSContext* cx, JSObject* globalObj, jsval* args, void* data);
317
JSBool CallModuleMethod(char* methodName, uintN argc, jsval* argv, jsval* retval = nsnull, ArgsInitCallback callback = nsnull, void* data = nsnull);
338
318
nsISupports* UnwrapNative(JSContext* cx, JSObject* obj);
339
319
void OpenTab(const char* url, HWND hWnd);
340
320
void ShowContextMenu(HWND hWnd, PRBool status);