~ubuntu-branches/ubuntu/natty/adblock-plus/natty

« back to all changes in this revision

Viewing changes to kmeleon/jsdefs.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Benjamin Drung
  • Date: 2010-11-05 18:42:36 UTC
  • mto: (25.1.1 sid)
  • mto: This revision was merged to the branch mainline in revision 27.
  • Revision ID: james.westby@ubuntu.com-20101105184236-h7dnu8mbfjaoya62
Tags: upstream-1.3.1
ImportĀ upstreamĀ versionĀ 1.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 * ***** END LICENSE BLOCK ***** */
24
24
 
25
25
#include "adblockplus.h"
26
 
JSFunctionSpec window_methods[] = {
27
 
  {"alert", JSAlert, 1, 0, 0},
28
 
  {"setIcon", JSSetIcon, 1, 0, 0},
29
 
  {"hideStatusBar", JSHideStatusBar, 1, 0, 0},
30
 
  {"openTab", JSOpenTab, 2, 0, 0},
31
 
  {"resetContextMenu", JSResetContextMenu, 0, 0, 0},
32
 
  {"addContextMenuItem", JSAddContextMenuItem, 1, 0, 0},
33
 
  {"createCommandID", JSCreateCommandID, 0, 0, 0},
34
 
  {"createPopupMenu", JSCreatePopupMenu, 0, 0, 0},
35
 
  {"addMenuItem", JSAddMenuItem, 7, 0, 0},
36
 
  {"getHWND", JSGetHWND, 1, 0, 0},
37
 
  {"subclassDialogWindow", JSSubclassDialogWindow, 1, 0, 0},
38
 
  {"addRootListener", JSAddRootListener, 3, 0, 0},
39
 
  {"removeRootListener", JSRemoveRootListener, 3, 0, 0},
40
 
  {"focusWindow", JSFocusWindow, 1, 0, 0},
41
 
  {"setTopmostWindow", JSSetTopmostWindow, 1, 0, 0},
42
 
  {"showToolbarContext", JSShowToolbarContext, 1, 0, 0},
43
 
  {NULL},
44
 
};
45
 
JSPropertySpec window_properties[] = {
46
 
  {"scriptable", 2, JSPROP_READONLY|JSPROP_PERMANENT, JSGetScriptable, nsnull},
47
 
  {NULL},
 
26
JSFunctionSpec module_functions[] = {
 
27
  {"alert", JSAlert, 1, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
28
  {"setIcon", JSSetIcon, 1, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
29
  {"hideStatusBar", JSHideStatusBar, 1, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
30
  {"openTab", JSOpenTab, 2, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
31
  {"resetContextMenu", JSResetContextMenu, 0, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
32
  {"addContextMenuItem", JSAddContextMenuItem, 1, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
33
  {"createCommandID", JSCreateCommandID, 0, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
34
  {"createPopupMenu", JSCreatePopupMenu, 0, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
35
  {"addMenuItem", JSAddMenuItem, 7, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
36
  {"getHWND", JSGetHWND, 1, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
37
  {"subclassDialogWindow", JSSubclassDialogWindow, 1, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
38
  {"addRootListener", JSAddRootListener, 3, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
39
  {"removeRootListener", JSRemoveRootListener, 3, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
40
  {"focusWindow", JSFocusWindow, 1, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
41
  {"setTopmostWindow", JSSetTopmostWindow, 1, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
42
  {"showToolbarContext", JSShowToolbarContext, 1, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT, 0},
 
43
  {nsnull, nsnull, 0, 0, 0},
48
44
};
49
45
 
50
46
WORD context_commands[] = {
51
 
  CMD_IMAGE,
 
47
  CMD_REMOVE_WHITELIST,
 
48
  CMD_FRAME,
52
49
  CMD_OBJECT,
53
 
  CMD_FRAME
 
50
  CMD_MEDIA,
 
51
  CMD_IMAGE
54
52
};
55
53
 
56
54
/************************
57
55
 * JavaScript callbacks *
58
56
 ************************/
59
57
 
60
 
JSBool JS_DLL_CALLBACK JSAlert(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
58
JSBool JSAlert(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
61
59
  *rval = JSVAL_VOID;
62
60
 
63
61
  JSString* message;
68
66
  return JS_TRUE;
69
67
}
70
68
 
71
 
JSBool JS_DLL_CALLBACK JSSetIcon(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
69
JSBool JSSetIcon(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
72
70
  *rval = JSVAL_VOID;
73
71
 
74
72
  if (argc == 1)
81
79
  return JS_TRUE;
82
80
}
83
81
 
84
 
JSBool JS_DLL_CALLBACK JSHideStatusBar(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
82
JSBool JSHideStatusBar(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
85
83
  *rval = JSVAL_VOID;
86
84
 
87
85
  if (argc == 1)
90
88
  return JS_TRUE;
91
89
}
92
90
 
93
 
JSBool JS_DLL_CALLBACK JSOpenTab(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
91
JSBool JSOpenTab(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
94
92
  *rval = JSVAL_VOID;
95
93
 
96
94
  char* url;
108
106
                  _T("FrameLinkPopup"), _T("FrameImageLinkPopup"), _T("FrameImagePopup"),
109
107
                  NULL};
110
108
 
111
 
JSBool JS_DLL_CALLBACK JSResetContextMenu(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
109
JSBool JSResetContextMenu(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
112
110
  *rval = JSVAL_VOID;
113
111
 
114
112
  for (int i = 0; menus[i]; i++) {
126
124
  return JS_TRUE;
127
125
}
128
126
 
129
 
JSBool JS_DLL_CALLBACK JSAddContextMenuItem(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
127
JSBool JSAddContextMenuItem(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
130
128
  *rval = JSVAL_VOID;
131
129
 
132
130
  int32 item;
133
 
  if (!JS_ConvertArguments(cx, argc, argv, "j", &item))
 
131
  char* label;
 
132
  if (!JS_ConvertArguments(cx, argc, argv, "js", &item, &label))
134
133
    return JS_FALSE;
135
134
 
136
 
  if (item < 0 || item >= NUM_LABELS)
137
 
    return JS_TRUE;
138
 
 
139
135
  MENUITEMINFO info = {0};
140
136
  info.cbSize = sizeof info;
141
137
  info.fMask = MIIM_TYPE;
156
152
        if (GetMenuItemInfo(hMenu, 0, TRUE, &info) && !(info.fType & MFT_OWNERDRAW))
157
153
          drawFlag = MF_STRING;
158
154
      }
159
 
      AppendMenuA(hMenu, drawFlag, cmdBase + context_commands[item], labelValues[item]);
 
155
 
 
156
      AppendMenuA(hMenu, drawFlag, cmdBase + context_commands[item], label);
160
157
    }
161
158
  }
162
159
  return JS_TRUE;
163
160
}
164
161
 
165
 
JSBool JS_DLL_CALLBACK JSCreateCommandID(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
162
JSBool JSCreateCommandID(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
166
163
  *rval = INT_TO_JSVAL(kFuncs->GetCommandIDs(1));
167
164
 
168
165
  return JS_TRUE;
169
166
}
170
167
 
171
 
JSBool JS_DLL_CALLBACK JSCreatePopupMenu(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
168
JSBool JSCreatePopupMenu(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
172
169
  HMENU ret = CreatePopupMenu();
173
170
  *rval = INT_TO_JSVAL(ret);
174
171
 
175
172
  return JS_TRUE;
176
173
}
177
174
 
178
 
JSBool JS_DLL_CALLBACK JSAddMenuItem(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
175
JSBool JSAddMenuItem(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
179
176
  *rval = JSVAL_VOID;
180
177
 
181
178
  int32 menu;
209
206
  return JS_TRUE;
210
207
}
211
208
 
212
 
JSBool JS_DLL_CALLBACK JSGetHWND(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
209
JSBool JSGetHWND(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
213
210
  *rval = JSVAL_NULL;
214
211
 
215
212
  if (argc != 1) {
230
227
  return JS_TRUE;
231
228
}
232
229
 
233
 
JSBool JS_DLL_CALLBACK JSSubclassDialogWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
230
JSBool JSSubclassDialogWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
234
231
  *rval = JSVAL_VOID;
235
232
 
236
233
  int32 wnd;
242
239
  return JS_TRUE;
243
240
}
244
241
 
245
 
JSBool JS_DLL_CALLBACK JSAddRootListener(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
242
JSBool JSAddRootListener(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
246
243
  *rval = JSVAL_VOID;
247
244
 
248
245
  JSObject* wndObject;
259
256
  if (rootWnd == nsnull)
260
257
    return NS_ERROR_FAILURE;
261
258
 
262
 
  nsCOMPtr<nsIChromeEventHandler> chromeHandler = rootWnd->GetChromeEventHandler();
263
 
  if (chromeHandler == nsnull)
 
259
  nsCOMPtr<nsPIDOMEventTarget> privateTarget = rootWnd->GetChromeEventHandler();
 
260
  if (privateTarget == nsnull)
264
261
    return NS_ERROR_FAILURE;
265
262
 
266
 
  nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(chromeHandler);
 
263
  nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(privateTarget);
267
264
  if (target == nsnull)
268
265
    return NS_ERROR_FAILURE;
269
266
 
271
268
  return JS_TRUE;
272
269
}
273
270
 
274
 
JSBool JS_DLL_CALLBACK JSRemoveRootListener(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
271
JSBool JSRemoveRootListener(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
275
272
  *rval = JSVAL_VOID;
276
273
 
277
274
  JSObject* wndObject;
288
285
  if (rootWnd == nsnull)
289
286
    return NS_ERROR_FAILURE;
290
287
 
291
 
  nsCOMPtr<nsIChromeEventHandler> chromeHandler = rootWnd->GetChromeEventHandler();
292
 
  if (chromeHandler == nsnull)
 
288
  nsCOMPtr<nsPIDOMEventTarget> privateTarget = rootWnd->GetChromeEventHandler();
 
289
  if (privateTarget == nsnull)
293
290
    return NS_ERROR_FAILURE;
294
291
 
295
 
  nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(chromeHandler);
 
292
  nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(privateTarget);
296
293
  if (target == nsnull)
297
294
    return NS_ERROR_FAILURE;
298
295
 
300
297
  return JS_TRUE;
301
298
}
302
299
 
303
 
JSBool JS_DLL_CALLBACK JSFocusWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
300
JSBool JSFocusWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
304
301
  *rval = JSVAL_VOID;
305
302
 
306
303
  int32 wnd;
311
308
  return JS_TRUE;
312
309
}
313
310
 
314
 
JSBool JS_DLL_CALLBACK JSSetTopmostWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
311
JSBool JSSetTopmostWindow(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
315
312
  *rval = JSVAL_VOID;
316
313
 
317
314
  int32 wnd;
322
319
  return JS_TRUE;
323
320
}
324
321
 
325
 
JSBool JS_DLL_CALLBACK JSShowToolbarContext(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
 
322
JSBool JSShowToolbarContext(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
326
323
  *rval = JSVAL_VOID;
327
324
 
328
325
  int32 wnd;
333
330
 
334
331
  return JS_TRUE;
335
332
}
336
 
 
337
 
JSBool JS_DLL_CALLBACK JSGetScriptable(JSContext *cx, JSObject *obj, jsval id, jsval *vp) {
338
 
  nsresult rv;
339
 
 
340
 
  nsCOMPtr<nsIXPConnect> xpc = do_GetService(nsIXPConnect::GetCID());
341
 
  if (xpc == nsnull)
342
 
    return JS_FALSE;
343
 
 
344
 
  nsCOMPtr<nsIXPConnectJSObjectHolder> wrapperHolder;
345
 
  rv = xpc->WrapNative(cx, JS_GetParent(cx, obj), scriptable, NS_GET_IID(nsISupports), getter_AddRefs(wrapperHolder));
346
 
  if (NS_FAILED(rv))
347
 
    return JS_FALSE;
348
 
 
349
 
  JSObject* result;
350
 
  rv = wrapperHolder->GetJSObject(&result);
351
 
  if (NS_FAILED(rv))
352
 
    return JS_FALSE;
353
 
 
354
 
  *vp = OBJECT_TO_JSVAL(result);
355
 
  return JS_TRUE;
356
 
}
 
 
b'\\ No newline at end of file'