25
25
#include "adblockplus.h"
27
JSObject* UnwrapJSObject(nsISupports* native) {
28
nsCOMPtr<nsIXPConnectWrappedJS> holder = do_QueryInterface(native);
33
nsresult rv = holder->GetJSObject(&innerObj);
27
JSBool CallModuleMethod(char* methodName, uintN argc, jsval* argv, jsval* retval, ArgsInitCallback callback, void* data)
31
retval = &localResult;
33
nsCOMPtr<xpcIJSModuleLoader> moduleLoader = do_GetService("@mozilla.org/moz/jsloader;1");
39
rv = moduleLoader->ImportInto(NS_LITERAL_CSTRING("resource:///modules/adblockplus/AppIntegrationKMeleon.jsm"), nsnull, nsnull, &globalObj);
40
if (NS_FAILED(rv) || !globalObj)
43
abpJSContextHolder holder;
44
JSContext* cx = holder.get();
48
if (callback && !callback(cx, globalObj, argv, data))
51
return JS_CallFunctionName(cx, globalObj, methodName, argc, argv, retval);
40
54
nsISupports* UnwrapNative(JSContext* cx, JSObject* obj) {
69
83
kFuncs->SendMessage("layers", PLUGIN_NAME, "AddLayersToWindow", (LONG)"1", (LONG)url);
72
void ShowContextMenu(HWND hWnd, PRBool status) {
73
abpJSContextHolder holder;
74
JSObject* overlay = UnwrapJSObject(fakeBrowserWindow);
75
JSContext* cx = holder.get();
76
if (cx != nsnull && overlay != nsnull) {
77
jsval arg = (status ? JSVAL_TRUE : JSVAL_FALSE);
79
if (JS_CallFunctionName(cx, overlay, "buildContextMenu", 1, &arg, &retval)) {
80
HMENU hMenu = NS_REINTERPRET_CAST(HMENU, JSVAL_TO_INT(retval));
86
void ShowContextMenu(HWND hWnd, PRBool status)
90
status ? JSVAL_TRUE : JSVAL_FALSE
93
if (CallModuleMethod("buildContextMenu", 2, args, &retval))
95
HMENU hMenu = reinterpret_cast<HMENU>(JSVAL_TO_INT(retval));
84
TrackPopupMenu(hMenu, TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL);
99
TrackPopupMenu(hMenu, TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL);