~woodrow-shen/totem/mybranch

« back to all changes in this revision

Viewing changes to browser-plugin/totemNarrowSpacePlugin.cpp

Tags: 2.24.3-3
* totem-mozilla.docs: ship README.browser-plugin which explains how to 
  disable the plugin for some MIME types.
* rules: remove the hack that only let totem-xine support VCDs and 
  DVDs, now that GStreamer supports them. Closes: #370789.
* 01_fake_keypresses.patch: new patch. Completely disable the broken 
  XTEST code that generates fake keypresses. Closes: #500330.
* 90_autotools.patch: regenerated.
* Build-depend on nautilus 2.22 to be sure to build the extension for 
  the correct version.
* totem-xine depends on libxine1-x.
* Standards version is 3.8.1.
* Upload to unstable.
* 04_tracker_build.patch: new patch, stolen upstream. Fix build with 
  latest tracker version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Totem Basic Plugin
 
1
/* Totem NarrowSpace Plugin
2
2
 *
3
 
 * Copyright (C) 2004 Bastien Nocera <hadess@hadess.net>
4
 
 * Copyright (C) 2002 David A. Schleef <ds@schleef.org>
5
 
 * Copyright (C) 2006 Christian Persch
 
3
 * Copyright © 2004 Bastien Nocera <hadess@hadess.net>
 
4
 * Copyright © 2002 David A. Schleef <ds@schleef.org>
 
5
 * Copyright © 2006, 2008 Christian Persch
6
6
 *
7
7
 * This library is free software; you can redistribute it and/or
8
8
 * modify it under the terms of the GNU Library General Public
16
16
 *
17
17
 * You should have received a copy of the GNU Library General Public
18
18
 * License along with this library; if not, write to the
19
 
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20
 
 * Boston, MA 02111-1307, USA.
21
 
 *
22
 
 * $Id: totemNarrowSpacePlugin.cpp 5159 2008-02-21 01:51:36Z hadess $
 
19
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 
20
 * Boston, MA 02110-1301  USA.
23
21
 */
24
22
 
25
 
#include <mozilla-config.h>
26
 
#include "config.h"
27
 
 
28
 
#include <glib.h>
29
 
 
30
 
#include <nsIProgrammingLanguage.h>
31
 
#include <nsISupportsImpl.h>
32
 
#include <nsMemory.h>
33
 
#include <nsXPCOM.h>
34
 
 
35
 
#define GNOME_ENABLE_DEBUG 1
36
 
/* define GNOME_ENABLE_DEBUG for more debug spew */
37
 
#include "debug.h"
38
 
 
39
 
#include "totemDebug.h"
40
 
#include "totemClassInfo.h"
41
 
 
 
23
#include <config.h>
 
24
 
 
25
#include "totemPlugin.h"
42
26
#include "totemNarrowSpacePlugin.h"
43
27
 
44
 
/* 2e390ee1-f0e3-423c-9764-f5ab50a40c06 */
45
 
static const nsCID kClassID = 
46
 
{ 0x2e390ee1, 0xf0e3, 0x423c, \
47
 
  { 0x97, 0x64, 0xf5, 0xab, 0x50, 0xa4, 0x0c, 0x06 } };
48
 
 
49
 
static const char kClassDescription[] = "totemNarrowSpacePlugin";
50
 
#define QUICKTIME_VERSION "7.2.0"
51
 
static const char kPluginDescription[] = "QuickTime Plug-in "QUICKTIME_VERSION;
52
 
 
53
 
static const totemPluginMimeEntry kMimeTypes[] = {
54
 
        { "video/quicktime", "mov", NULL },
55
 
        { "video/mp4", "mp4", NULL },
56
 
        { "image/x-macpaint", "pntg", NULL },
57
 
        { "image/x-quicktime", "pict, pict1, pict2", "image/x-pict" },
58
 
        { "video/x-m4v", "m4v", NULL },
 
28
static const char *methodNames[] = {
 
29
  "GetAutoPlay",
 
30
  "GetBgColor",
 
31
  "GetComponentVersion",
 
32
  "GetControllerVisible",
 
33
  "GetDuration",
 
34
  "GetEndTime",
 
35
  "GetFieldOfView",
 
36
  "GetHotpotTarget",
 
37
  "GetHotpotUrl",
 
38
  "GetHREF",
 
39
  "GetIsLooping",
 
40
  "GetIsQuickTimeRegistered",
 
41
  "GetIsVRMovie",
 
42
  "GetKioskMode",
 
43
  "GetLanguage",
 
44
  "GetLoopIsPalindrome",
 
45
  "GetMatrix",
 
46
  "GetMaxBytesLoaded",
 
47
  "GetMaxTimeLoaded",
 
48
  "GetMIMEType",
 
49
  "GetMovieID",
 
50
  "GetMovieName",
 
51
  "GetMovieSize",
 
52
  "GetMute",
 
53
  "GetNodeCount",
 
54
  "GetNodeID",
 
55
  "GetPanAngle",
 
56
  "GetPlayEveryFrame",
 
57
  "GetPluginStatus",
 
58
  "GetPluginVersion",
 
59
  "GetQTNextUrl",
 
60
  "GetQuickTimeConnectionSpeed",
 
61
  "GetQuickTimeLanguage",
 
62
  "GetQuickTimeVersion",
 
63
  "GetRate",
 
64
  "GetRectangle",
 
65
  "GetResetPropertiesOnReload",
 
66
  "GetSpriteTrackVariable",
 
67
  "GetStartTime",
 
68
  "GetTarget",
 
69
  "GetTiltAngle",
 
70
  "GetTime",
 
71
  "GetTimeScale",
 
72
  "GetTrackCount"
 
73
  "GetTrackEnabled",
 
74
  "GetTrackName",
 
75
  "GetTrackType",
 
76
  "GetURL",
 
77
  "GetUserData",
 
78
  "GetVolume",
 
79
  "GoPreviousNode",
 
80
  "Play",
 
81
  "Rewind",
 
82
  "SetAutoPlay",
 
83
  "SetBgColor",
 
84
  "SetControllerVisible",
 
85
  "SetEndTime",
 
86
  "SetFieldOfView",
 
87
  "SetHotpotTarget",
 
88
  "SetHotpotUrl",
 
89
  "SetHREF",
 
90
  "SetIsLooping",
 
91
  "SetKioskMode",
 
92
  "SetLanguage",
 
93
  "SetLoopIsPalindrome",
 
94
  "SetMatrix",
 
95
  "SetMovieID",
 
96
  "SetMovieName",
 
97
  "SetMute",
 
98
  "SetNodeID",
 
99
  "SetPanAngle",
 
100
  "SetPlayEveryFrame",
 
101
  "SetQTNextUrl",
 
102
  "SetRate",
 
103
  "SetRectangle",
 
104
  "SetResetPropertiesOnReload",
 
105
  "SetSpriteTrackVariable",
 
106
  "SetStartTime",
 
107
  "SetTarget",
 
108
  "SetTiltAngle",
 
109
  "SetTime",
 
110
  "SetTrackEnabled",
 
111
  "SetURL",
 
112
  "SetVolume",
 
113
  "ShowDefaultView",
 
114
  "Step",
 
115
  "Stop"
59
116
};
60
117
 
61
 
void*
62
 
totemScriptablePlugin::operator new (size_t aSize) CPP_THROW_NEW
63
 
{
64
 
  void *object = ::operator new (aSize);
65
 
  if (object) {
66
 
    memset (object, 0, aSize);
67
 
  }
68
 
 
69
 
  return object;
70
 
}
71
 
 
72
 
totemScriptablePlugin::totemScriptablePlugin (totemPlugin *aPlugin)
73
 
  : mPluginState(eState_Waiting),
74
 
    mPlugin(aPlugin)
75
 
{
76
 
  D ("%s ctor [%p]", kClassDescription, (void*) this);
77
 
}
78
 
 
79
 
totemScriptablePlugin::~totemScriptablePlugin ()
80
 
{
81
 
  D ("%s dtor [%p]", kClassDescription, (void*) this);
82
 
}
83
 
 
84
 
/* static */ char *
85
 
totemScriptablePlugin::PluginDescription ()
86
 
{
87
 
  return (char*) kPluginDescription;
88
 
}
89
 
 
90
 
/* static */ char *
91
 
totemScriptablePlugin::PluginLongDescription ()
92
 
{
93
 
  return (char*) totem_plugin_get_long_description();
94
 
}
95
 
 
96
 
/* static */ void
97
 
totemScriptablePlugin::PluginMimeTypes (const totemPluginMimeEntry **_entries,
98
 
                                        PRUint32 *_count)
99
 
{
100
 
  *_entries = kMimeTypes;
101
 
  *_count = G_N_ELEMENTS (kMimeTypes);
102
 
}
103
 
 
104
 
/* Interface implementations */
105
 
 
106
 
NS_IMPL_ISUPPORTS2 (totemScriptablePlugin,
107
 
                    totemINarrowSpacePlayer,
108
 
                    nsIClassInfo)
109
 
 
110
 
/* nsIClassInfo */
111
 
 
112
 
TOTEM_CLASSINFO_BEGIN (totemScriptablePlugin,
113
 
                       1,
114
 
                       kClassID,
115
 
                       kClassDescription)
116
 
  TOTEM_CLASSINFO_ENTRY (0, totemINarrowSpacePlayer)
117
 
TOTEM_CLASSINFO_END
118
 
 
119
 
/* totemINarrowSpacePlayer */
120
 
 
121
 
#define TOTEM_SCRIPTABLE_INTERFACE "totemINarrowSpacePlayer"
122
 
 
123
 
/* boolean GetAutoPlay (); */
124
 
NS_IMETHODIMP
125
 
totemScriptablePlugin::GetAutoPlay(PRBool *_retval)
126
 
{
127
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
128
 
 
129
 
  *_retval = mAutoPlay;
130
 
  return NS_OK;
131
 
}
132
 
 
133
 
/* void SetAutoPlay (in boolean enabled); */
134
 
NS_IMETHODIMP
135
 
totemScriptablePlugin::SetAutoPlay(PRBool enabled)
136
 
{
137
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
138
 
 
139
 
  mAutoPlay = enabled != PR_FALSE;
140
 
  return NS_OK;
141
 
}
142
 
 
143
 
/* ACString GetBgColor (); */
144
 
NS_IMETHODIMP
145
 
totemScriptablePlugin::GetBgColor(nsACString & _retval)
146
 
{
147
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
148
 
 
149
 
  _retval.Assign (mBackgroundColour);
150
 
  return NS_OK;
151
 
}
152
 
 
153
 
/* void SetBgColor (in ACString colour); */
154
 
NS_IMETHODIMP
155
 
totemScriptablePlugin::SetBgColor(const nsACString & colour)
156
 
{
157
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
158
 
 
159
 
  mBackgroundColour = colour;
160
 
  return NS_OK;
161
 
}
162
 
 
163
 
/* ACString GetComponentVersion (in ACString type, in ACString subtype, in ACString vendor); */
164
 
NS_IMETHODIMP
165
 
totemScriptablePlugin::GetComponentVersion (const nsACString & type,
166
 
                                            const nsACString & subtype,
167
 
                                            const nsACString & vendor,
168
 
                                            nsACString & _retval)
169
 
{
170
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED ();
171
 
  D ("GetComponentVersion [%s, %s, %s]",
172
 
     nsCString(type).get(),
173
 
     nsCString(subtype).get(),
174
 
     nsCString(vendor).get());
175
 
 
176
 
  _retval.Assign ("1.0");
177
 
  return NS_OK;
178
 
}
179
 
 
180
 
/* boolean GetControllerVisible (); */
181
 
NS_IMETHODIMP
182
 
totemScriptablePlugin::GetControllerVisible(PRBool *_retval)
183
 
{
184
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
185
 
  *_retval = mControllerVisible;
186
 
  return NS_OK;
187
 
}
188
 
 
189
 
/* void SetControllerVisible (in boolean enabled); */
190
 
NS_IMETHODIMP
191
 
totemScriptablePlugin::SetControllerVisible(PRBool enabled)
192
 
{
193
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
194
 
 
195
 
  mControllerVisible = enabled != PR_FALSE;
196
 
  return NS_OK;
197
 
}
198
 
 
199
 
/* unsigned long GetDuration (); */
200
 
NS_IMETHODIMP
201
 
totemScriptablePlugin::GetDuration(PRUint32 *_retval)
202
 
{
203
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
204
 
 
205
 
  NS_ENSURE_STATE (IsValid());
206
 
  *_retval = mPlugin->mDuration;
207
 
  return NS_OK;
208
 
}
209
 
 
210
 
/* unsigned long GetEndTime (); */
211
 
NS_IMETHODIMP
212
 
totemScriptablePlugin::GetEndTime(PRUint32 *_retval)
213
 
{
214
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
215
 
 
216
 
  *_retval = 0;
217
 
  return NS_OK;
218
 
}
219
 
 
220
 
/* void SetEndTime (in unsigned long time); */
221
 
NS_IMETHODIMP
222
 
totemScriptablePlugin::SetEndTime(PRUint32 time)
223
 
{
224
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
225
 
 
226
 
  return NS_OK;
227
 
}
228
 
 
229
 
/* float GetFieldOfView (); */
230
 
NS_IMETHODIMP
231
 
totemScriptablePlugin::GetFieldOfView (float *_retval)
232
 
{
233
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
234
 
  return NS_ERROR_NOT_AVAILABLE;
235
 
}
236
 
 
237
 
/* void SetFieldOfView (in float angle); */
238
 
NS_IMETHODIMP
239
 
totemScriptablePlugin::SetFieldOfView(float angle)
240
 
{
241
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
242
 
  return NS_ERROR_NOT_AVAILABLE;
243
 
}
244
 
 
245
 
/* void GoPreviousNode (); */
246
 
NS_IMETHODIMP
247
 
totemScriptablePlugin::GoPreviousNode()
248
 
{
249
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
250
 
  return NS_ERROR_NOT_AVAILABLE;
251
 
}
252
 
 
253
 
/* AUTF8String GetHotspotTarget (in unsigned long id); */
254
 
NS_IMETHODIMP
255
 
totemScriptablePlugin::GetHotspotTarget(PRUint32 id, nsACString & _retval)
256
 
{
257
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
258
 
  return NS_ERROR_NOT_AVAILABLE;
259
 
}
260
 
 
261
 
/* void SetHotspotTarget (in unsigned long id, in AUTF8String target); */
262
 
NS_IMETHODIMP
263
 
totemScriptablePlugin::SetHotspotTarget(PRUint32 id, const nsACString & target)
264
 
{
265
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
266
 
  return NS_ERROR_NOT_AVAILABLE;
267
 
}
268
 
 
269
 
/* AUTF8String GetHotspotUrl (in unsigned long id); */
270
 
NS_IMETHODIMP
271
 
totemScriptablePlugin::GetHotspotUrl(PRUint32 id, nsACString & _retval)
272
 
{
273
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
274
 
  return NS_ERROR_NOT_AVAILABLE;
275
 
}
276
 
 
277
 
/* void SetHotspotUrl (in unsigned long id, in AUTF8String url); */
278
 
NS_IMETHODIMP
279
 
totemScriptablePlugin::SetHotspotUrl(PRUint32 id, const nsACString & url)
280
 
{
281
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
282
 
  return NS_ERROR_NOT_AVAILABLE;
283
 
}
284
 
 
285
 
/* AUTF8String GetHREF (); */
286
 
NS_IMETHODIMP
287
 
totemScriptablePlugin::GetHREF(nsACString & _retval)
288
 
{
289
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
290
 
 
291
 
  return NS_OK;
292
 
}
293
 
 
294
 
/* void SetHREF (in AUTF8String href); */
295
 
NS_IMETHODIMP
296
 
totemScriptablePlugin::SetHREF(const nsACString & href)
297
 
{
298
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
299
 
 
300
 
  return NS_OK;
301
 
}
302
 
 
303
 
/* boolean GetIsLooping (); */
304
 
NS_IMETHODIMP
305
 
totemScriptablePlugin::GetIsLooping(PRBool *_retval)
306
 
{
307
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
308
 
 
309
 
  *_retval = mIsLooping;
310
 
  return NS_OK;
311
 
}
312
 
 
313
 
/* void SetIsLooping (in boolean enabled); */
314
 
NS_IMETHODIMP
315
 
totemScriptablePlugin::SetIsLooping(PRBool enabled)
316
 
{
317
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
318
 
 
319
 
  mIsLooping = enabled != PR_FALSE;
320
 
  return NS_OK;
321
 
}
322
 
 
323
 
/* boolean GetIsQuickTimeRegistered (); */
324
 
NS_IMETHODIMP
325
 
totemScriptablePlugin::GetIsQuickTimeRegistered(PRBool *_retval)
326
 
{
327
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
328
 
 
329
 
  *_retval = PR_FALSE;
330
 
  return NS_OK;
331
 
}
332
 
 
333
 
/* boolean GetIsVRMovie (); */
334
 
NS_IMETHODIMP
335
 
totemScriptablePlugin::GetIsVRMovie(PRBool *_retval)
336
 
{
337
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
338
 
 
339
 
  *_retval = PR_FALSE;
340
 
  return NS_OK;
341
 
}
342
 
 
343
 
/* boolean GetKioskMode (); */
344
 
NS_IMETHODIMP
345
 
totemScriptablePlugin::GetKioskMode(PRBool *_retval)
346
 
{
347
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
348
 
 
349
 
  *_retval = mKioskMode;
350
 
  return NS_OK;
351
 
}
352
 
 
353
 
/* void SetKioskMode (in boolean enabled); */
354
 
NS_IMETHODIMP
355
 
totemScriptablePlugin::SetKioskMode(PRBool enabled)
356
 
{
357
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
358
 
 
359
 
  mKioskMode = enabled != PR_FALSE;
360
 
  return NS_OK;
361
 
}
362
 
 
363
 
/* ACString GetLanguage (); */
364
 
NS_IMETHODIMP
365
 
totemScriptablePlugin::GetLanguage(nsACString & _retval)
366
 
{
367
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
368
 
 
369
 
  _retval.Assign ("English");
370
 
  return NS_OK;
371
 
}
372
 
 
373
 
/* void SetLanguage (in ACString language); */
374
 
NS_IMETHODIMP
375
 
totemScriptablePlugin::SetLanguage(const nsACString & language)
376
 
{
377
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
378
 
 
379
 
  return NS_OK;
380
 
}
381
 
 
382
 
/* boolean GetLoopIsPalindrome (); */
383
 
NS_IMETHODIMP
384
 
totemScriptablePlugin::GetLoopIsPalindrome(PRBool *_retval)
385
 
{
386
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
387
 
 
388
 
  *_retval = mLoopIsPalindrome;
389
 
  return NS_OK;
390
 
}
391
 
 
392
 
/* void SetLoopIsPalindrome (in boolean enabled); */
393
 
NS_IMETHODIMP
394
 
totemScriptablePlugin::SetLoopIsPalindrome(PRBool enabled)
395
 
{
396
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
397
 
 
398
 
  mLoopIsPalindrome = enabled != PR_FALSE;
399
 
  return NS_OK;
400
 
}
401
 
 
402
 
/* ACString GetMatrix (); */
403
 
NS_IMETHODIMP
404
 
totemScriptablePlugin::GetMatrix(nsACString & _retval)
405
 
{
406
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
407
 
 
408
 
  _retval.Assign (mMatrix);
409
 
  return NS_OK;
410
 
}
411
 
 
412
 
/* void SetMatrix (in ACString matrix); */
413
 
NS_IMETHODIMP
414
 
totemScriptablePlugin::SetMatrix(const nsACString & matrix)
415
 
{
416
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
417
 
 
418
 
  mMatrix = matrix;
419
 
  return NS_OK;
420
 
}
421
 
 
422
 
/* unsigned long GetMaxBytesLoaded (); */
423
 
NS_IMETHODIMP
424
 
totemScriptablePlugin::GetMaxBytesLoaded(PRUint32 *_retval)
425
 
{
426
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
427
 
 
428
 
  NS_ENSURE_STATE (IsValid());
429
 
  *_retval = mPlugin->mBytesStreamed;
430
 
  return NS_OK;
431
 
}
432
 
 
433
 
/* unsigned long GetMaxTimeLoaded (); */
434
 
NS_IMETHODIMP
435
 
totemScriptablePlugin::GetMaxTimeLoaded(PRUint32 *_retval)
436
 
{
437
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
438
 
 
439
 
  return NS_OK;
440
 
}
441
 
 
442
 
/* ACString GetMIMEType (); */
443
 
NS_IMETHODIMP
444
 
totemScriptablePlugin::GetMIMEType(nsACString & _retval)
445
 
{
446
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
447
 
 
448
 
  _retval.Assign ("video/quicktime");
449
 
  return NS_OK;
450
 
}
451
 
 
452
 
/* unsigned long GetMovieID (); */
453
 
NS_IMETHODIMP
454
 
totemScriptablePlugin::GetMovieID(PRUint32 *_retval)
455
 
{
456
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
457
 
 
458
 
  return NS_OK;
459
 
}
460
 
 
461
 
/* void SetMovieID (in unsigned long id); */
462
 
NS_IMETHODIMP
463
 
totemScriptablePlugin::SetMovieID(PRUint32 id)
464
 
{
465
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
466
 
 
467
 
  return NS_OK;
468
 
}
469
 
 
470
 
/* AUTF8String GetMovieName (); */
471
 
NS_IMETHODIMP
472
 
totemScriptablePlugin::GetMovieName(nsACString & _retval)
473
 
{
474
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
475
 
 
476
 
  _retval.Assign (mMovieName);
477
 
  return NS_OK;
478
 
}
479
 
 
480
 
/* void SetMovieName (in AUTF8String name); */
481
 
NS_IMETHODIMP
482
 
totemScriptablePlugin::SetMovieName(const nsACString & name)
483
 
{
484
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
485
 
 
486
 
  mMovieName = name;
487
 
  return NS_OK;
488
 
}
489
 
 
490
 
/* unsigned long GetMovieSize (); */
491
 
NS_IMETHODIMP
492
 
totemScriptablePlugin::GetMovieSize(PRUint32 *_retval)
493
 
{
494
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
495
 
 
496
 
  NS_ENSURE_STATE (IsValid());
497
 
  *_retval = mPlugin->mBytesLength;
498
 
  return NS_OK;
499
 
}
500
 
 
501
 
/* boolean GetMute (); */
502
 
NS_IMETHODIMP
503
 
totemScriptablePlugin::GetMute(PRBool *_retval)
504
 
{
505
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
506
 
 
507
 
  *_retval = mMute;
508
 
  return NS_OK;
509
 
}
510
 
 
511
 
/* void SetMute (in boolean enabled); */
512
 
NS_IMETHODIMP
513
 
totemScriptablePlugin::SetMute(PRBool enabled)
514
 
{
515
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
516
 
 
517
 
  mMute = enabled != PR_FALSE;
518
 
  return NS_OK;
519
 
}
520
 
 
521
 
/* unsigned long GetNodeCount (); */
522
 
NS_IMETHODIMP
523
 
totemScriptablePlugin::GetNodeCount(PRUint32 *_retval)
524
 
{
525
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
526
 
 
527
 
  return NS_ERROR_NOT_AVAILABLE;
528
 
}
529
 
 
530
 
/* unsigned long GetNodeID (); */
531
 
NS_IMETHODIMP
532
 
totemScriptablePlugin::GetNodeID(PRUint32 *_retval)
533
 
{
534
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
535
 
 
536
 
  return NS_ERROR_NOT_AVAILABLE;
537
 
}
538
 
 
539
 
/* void SetNodeID (in unsigned long id); */
540
 
NS_IMETHODIMP
541
 
totemScriptablePlugin::SetNodeID(PRUint32 id)
542
 
{
543
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
544
 
 
545
 
  return NS_ERROR_NOT_AVAILABLE;
546
 
}
547
 
 
548
 
/* float GetPanAngle (); */
549
 
NS_IMETHODIMP
550
 
totemScriptablePlugin::GetPanAngle(float *_retval)
551
 
{
552
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
553
 
 
554
 
  return NS_ERROR_NOT_AVAILABLE;
555
 
}
556
 
 
557
 
/* void SetPanAngle (in float angle); */
558
 
NS_IMETHODIMP
559
 
totemScriptablePlugin::SetPanAngle(float angle)
560
 
{
561
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
562
 
 
563
 
  return NS_ERROR_NOT_AVAILABLE;
564
 
}
565
 
 
566
 
/* void Play (); */
567
 
NS_IMETHODIMP
568
 
totemScriptablePlugin::Play ()
569
 
{
570
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
571
 
 
572
 
  NS_ENSURE_STATE (IsValid ());
573
 
 
574
 
  return mPlugin->DoCommand (TOTEM_COMMAND_PLAY);
575
 
}
576
 
 
577
 
/* boolean GetPlayEveryFrame (); */
578
 
NS_IMETHODIMP
579
 
totemScriptablePlugin::GetPlayEveryFrame(PRBool *_retval)
580
 
{
581
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
582
 
 
583
 
  *_retval = mPlayEveryFrame;
584
 
  return NS_OK;
585
 
}
586
 
 
587
 
/* void SetPlayEveryFrame (in boolean enabled); */
588
 
NS_IMETHODIMP
589
 
totemScriptablePlugin::SetPlayEveryFrame(PRBool enabled)
590
 
{
591
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
592
 
 
593
 
  mPlayEveryFrame = enabled != PR_FALSE;
594
 
  return NS_OK;
595
 
}
596
 
 
597
 
/* ACString GetPluginStatus (); */
598
 
NS_IMETHODIMP
599
 
totemScriptablePlugin::GetPluginStatus(nsACString & _retval)
600
 
{
601
 
  static const char *kState[] = {
602
 
    "Complete",
603
 
    "Error:<%d>",
604
 
    "Loading",
605
 
    "Playable",
606
 
    "Waiting"
607
 
  };
608
 
 
609
 
  if (mPluginState != eState_Error) {
610
 
    _retval.Assign (kState[mPluginState]);
611
 
  } else {
612
 
    /* FIXME */
613
 
    _retval.Assign ("Error:<1>");
614
 
  }
615
 
  return NS_OK;
616
 
}
617
 
 
618
 
/* ACString GetPluginVersion (); */
619
 
NS_IMETHODIMP
620
 
totemScriptablePlugin::GetPluginVersion(nsACString & _retval)
621
 
{
622
 
  _retval.Assign (QUICKTIME_VERSION);
623
 
  return NS_OK;
624
 
}
625
 
 
626
 
/* AUTF8String GetQTNEXTUrl (in unsigned long index); */
627
 
NS_IMETHODIMP
628
 
totemScriptablePlugin::GetQTNEXTUrl (PRUint32 index,
629
 
                                     nsACString & _retval)
630
 
{
631
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
632
 
 
633
 
  return NS_OK;
634
 
}
635
 
 
636
 
/* void SetQTNEXTUrl (in unsigned long index, in AUTF8String url); */
637
 
NS_IMETHODIMP
638
 
totemScriptablePlugin::SetQTNEXTUrl (PRUint32 index,
639
 
                                     const nsACString & url)
640
 
{
641
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
642
 
 
643
 
  return NS_OK;
644
 
}
645
 
 
646
 
/* unsigned long GetQuickTimeConnectionSpeed (); */
647
 
NS_IMETHODIMP
648
 
totemScriptablePlugin::GetQuickTimeConnectionSpeed(PRUint32 *_retval)
649
 
{
650
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
651
 
 
652
 
  *_retval = 300000; /* FIXME */
653
 
  return NS_OK;
654
 
}
655
 
 
656
 
/* ACString GetQuickTimeLanguage (); */
657
 
NS_IMETHODIMP
658
 
totemScriptablePlugin::GetQuickTimeLanguage(nsACString & _retval)
659
 
{
660
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
661
 
 
662
 
  _retval.Assign ("English"); /* FIXME */
663
 
  return NS_OK;
664
 
}
665
 
 
666
 
/* ACString GetQuickTimeVersion (); */
667
 
NS_IMETHODIMP
668
 
totemScriptablePlugin::GetQuickTimeVersion(nsACString & _retval)
669
 
{
670
 
  _retval.Assign (QUICKTIME_VERSION);
671
 
  return NS_OK;
672
 
}
673
 
 
674
 
/* float GetRate (); */
675
 
NS_IMETHODIMP
676
 
totemScriptablePlugin::GetRate(float *_retval)
677
 
{
678
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
679
 
 
680
 
  NS_ENSURE_STATE (IsValid());
681
 
 
682
 
  if (mPlugin->mState == TOTEM_STATE_PLAYING) {
683
 
    *_retval = 1.0;
684
 
  } else {
685
 
    *_retval = 0.0;
686
 
  }
687
 
  return NS_OK;
688
 
}
689
 
 
690
 
/* void SetRate (in float rate); */
691
 
NS_IMETHODIMP
692
 
totemScriptablePlugin::SetRate(float rate)
693
 
{
694
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
695
 
 
696
 
  /* mRate = rate; FIXME */
697
 
  return NS_OK;
698
 
}
699
 
 
700
 
/* void SetRectangle (in ACString rectangle); */
701
 
NS_IMETHODIMP
702
 
totemScriptablePlugin::SetRectangle(const nsACString & rectangle)
703
 
{
704
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
705
 
 
706
 
  mRectangle = rectangle;
707
 
  return NS_OK;
708
 
}
709
 
 
710
 
/* ACString GetRectangle (); */
711
 
NS_IMETHODIMP
712
 
totemScriptablePlugin::GetRectangle(nsACString & _retval)
713
 
{
714
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
715
 
 
716
 
  _retval.Assign (mRectangle);
717
 
  return NS_OK;
718
 
}
719
 
 
720
 
/* boolean GetResetPropertiesOnReload (); */
721
 
NS_IMETHODIMP
722
 
totemScriptablePlugin::GetResetPropertiesOnReload(PRBool *_retval)
723
 
{
724
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
725
 
 
726
 
  *_retval = mResetPropertiesOnReload;
727
 
  return NS_OK;
728
 
}
729
 
 
730
 
/* void SetResetPropertiesOnReload (in boolean enabled); */
731
 
NS_IMETHODIMP
732
 
totemScriptablePlugin::SetResetPropertiesOnReload(PRBool enabled)
733
 
{
734
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
735
 
 
736
 
  mResetPropertiesOnReload = enabled != PR_FALSE;
737
 
  return NS_OK;
738
 
}
739
 
 
740
 
/* void Rewind (); */
741
 
NS_IMETHODIMP
742
 
totemScriptablePlugin::Rewind ()
743
 
{
744
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
745
 
 
746
 
  NS_ENSURE_STATE (IsValid ());
747
 
 
748
 
  return mPlugin->DoCommand (TOTEM_COMMAND_PAUSE);
749
 
}
750
 
 
751
 
/* void ShowDefaultView (); */
752
 
NS_IMETHODIMP
753
 
totemScriptablePlugin::ShowDefaultView()
754
 
{
755
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
756
 
 
757
 
  return NS_OK;
758
 
}
759
 
 
760
 
/* ACString GetSpriteTrackVariable (in unsigned long track, in unsigned long index); */
761
 
NS_IMETHODIMP
762
 
totemScriptablePlugin::GetSpriteTrackVariable (PRUint32 track,
763
 
                                               PRUint32 index,
764
 
                                               nsACString & _retval)
765
 
{
766
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
767
 
 
768
 
  return NS_OK;
769
 
}
770
 
 
771
 
/* void SetSpriteTrackVariable (in unsigned long track, in unsigned long index, in ACString value); */
772
 
NS_IMETHODIMP
773
 
totemScriptablePlugin::SetSpriteTrackVariable (PRUint32 track,
774
 
                                               PRUint32 index,
775
 
                                               const nsACString & value)
776
 
{
777
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
778
 
 
779
 
  return NS_OK;
780
 
}
781
 
 
782
 
/* void SetStartTime (in unsigned long time); */
783
 
NS_IMETHODIMP
784
 
totemScriptablePlugin::SetStartTime(PRUint32 time)
785
 
{
786
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
787
 
 
788
 
  return NS_OK;
789
 
}
790
 
 
791
 
/* unsigned long GetStartTime (); */
792
 
NS_IMETHODIMP
793
 
totemScriptablePlugin::GetStartTime (PRUint32 *_retval)
794
 
{
795
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
796
 
 
797
 
  *_retval = 0; /* FIXME */
798
 
  return NS_OK;
799
 
}
800
 
 
801
 
/* void Step (in long steps); */
802
 
NS_IMETHODIMP
803
 
totemScriptablePlugin::Step(PRInt32 steps)
804
 
{
805
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
806
 
 
807
 
  return NS_OK;
808
 
}
809
 
 
810
 
/* void Stop (); */
811
 
NS_IMETHODIMP
812
 
totemScriptablePlugin::Stop ()
813
 
{
814
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
815
 
 
816
 
  NS_ENSURE_STATE (IsValid ());
817
 
 
818
 
  return mPlugin->DoCommand (TOTEM_COMMAND_PAUSE);
819
 
}
820
 
 
821
 
/* AUTF8String GetTarget (); */
822
 
NS_IMETHODIMP
823
 
totemScriptablePlugin::GetTarget(nsACString & _retval)
824
 
{
825
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
826
 
 
827
 
  return NS_OK;
828
 
}
829
 
 
830
 
/* void SetTarget (in AUTF8String target); */
831
 
NS_IMETHODIMP
832
 
totemScriptablePlugin::SetTarget(const nsACString & target)
833
 
{
834
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
835
 
 
836
 
  return NS_OK;
837
 
}
838
 
 
839
 
/* float GetTiltAngle (); */
840
 
NS_IMETHODIMP
841
 
totemScriptablePlugin::GetTiltAngle(float *_retval)
842
 
{
843
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
844
 
 
845
 
  return NS_ERROR_NOT_AVAILABLE;
846
 
}
847
 
 
848
 
/* void SetTiltAngle (in float angle); */
849
 
NS_IMETHODIMP
850
 
totemScriptablePlugin::SetTiltAngle(float angle)
851
 
{
852
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
853
 
 
854
 
  return NS_ERROR_NOT_AVAILABLE;
855
 
}
856
 
 
857
 
/* unsigned long GetTime (); */
858
 
NS_IMETHODIMP
859
 
totemScriptablePlugin::GetTime(PRUint32 *_retval)
860
 
{
861
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
862
 
 
863
 
  *_retval = mPlugin->mTime;
864
 
  return NS_OK;
865
 
}
866
 
 
867
 
/* void SetTime (in unsigned long time); */
868
 
NS_IMETHODIMP
869
 
totemScriptablePlugin::SetTime(PRUint32 time)
870
 
{
871
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
872
 
 
873
 
  return NS_OK;
874
 
}
875
 
 
876
 
/* unsigned long GetTimeScale (); */
877
 
NS_IMETHODIMP
878
 
totemScriptablePlugin::GetTimeScale(PRUint32 *_retval)
879
 
{
880
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
881
 
 
882
 
  *_retval = 1000;
883
 
  return NS_OK;
884
 
}
885
 
 
886
 
/* unsigned long GetTrackCount (); */
887
 
NS_IMETHODIMP
888
 
totemScriptablePlugin::GetTrackCount(PRUint32 *_retval)
889
 
{
890
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
891
 
 
892
 
  *_retval = 1;
893
 
  return NS_OK;
894
 
}
895
 
 
896
 
/* boolean GetTrackEnabled (in unsigned long index); */
897
 
NS_IMETHODIMP
898
 
totemScriptablePlugin::GetTrackEnabled (PRUint32 index,
899
 
                                        PRBool *_retval)
900
 
{
901
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
902
 
 
903
 
  *_retval = PR_TRUE;
904
 
  return NS_OK;
905
 
}
906
 
 
907
 
/* void SetTrackEnabled (in unsigned long index, in boolean enabled); */
908
 
NS_IMETHODIMP
909
 
totemScriptablePlugin::SetTrackEnabled (PRUint32 index,
910
 
                                        PRBool enabled)
911
 
{
912
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
913
 
 
914
 
  return NS_OK;
915
 
}
916
 
 
917
 
/* AUTF8String GetTrackName (in unsigned long index); */
918
 
NS_IMETHODIMP
919
 
totemScriptablePlugin::GetTrackName (PRUint32 index,
920
 
                                     nsACString & _retval)
921
 
{
922
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
923
 
 
924
 
  return NS_OK;
925
 
}
926
 
 
927
 
/* AUTF8String GetTrackType (in unsigned long index); */
928
 
NS_IMETHODIMP
929
 
totemScriptablePlugin::GetTrackType (PRUint32 index,
930
 
                                     nsACString & _retval)
931
 
{
932
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
933
 
 
934
 
  return NS_OK;
935
 
}
936
 
 
937
 
/* AUTF8String GetURL (); */
938
 
NS_IMETHODIMP
939
 
totemScriptablePlugin::GetURL (nsACString & _retval)
940
 
{
941
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
942
 
 
943
 
  return NS_OK;
944
 
}
945
 
 
946
 
/* void SetURL (in AUTF8String url); */
947
 
NS_IMETHODIMP
948
 
totemScriptablePlugin::SetURL (const nsACString & url)
949
 
{
950
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
951
 
 
952
 
  return NS_OK;
953
 
}
954
 
 
955
 
/* AUTF8String GetUserData (in AUTF8String identifier); */
956
 
NS_IMETHODIMP
957
 
totemScriptablePlugin::GetUserData  (const nsACString & identifier,
958
 
                                     nsACString & _retval)
959
 
{
960
 
  TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
961
 
 
962
 
  return NS_OK;
963
 
}
964
 
 
965
 
/* unsigned long GetVolume (); */
966
 
NS_IMETHODIMP
967
 
totemScriptablePlugin::GetVolume(PRUint32 *_retval)
968
 
{
969
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
970
 
 
971
 
  NS_ENSURE_STATE (IsValid ());
972
 
 
973
 
  *_retval = mPlugin->mVolume * 100.0;
974
 
  return NS_OK;
975
 
}
976
 
 
977
 
/* void SetVolume (in unsigned long volume); */
978
 
NS_IMETHODIMP
979
 
totemScriptablePlugin::SetVolume(PRUint32 aVolume)
980
 
{
981
 
  TOTEM_SCRIPTABLE_LOG_ACCESS ();
982
 
 
983
 
  NS_ENSURE_STATE (IsValid ());
984
 
 
985
 
  nsresult rv = mPlugin->SetVolume ((double) aVolume / 100);
986
 
 
987
 
  /* Volume passed in is 0 through to 100 */
988
 
  mPlugin->mVolume = (double) aVolume / 100;
989
 
 
990
 
  return rv;
991
 
}
992
 
 
 
118
TOTEM_IMPLEMENT_NPCLASS (totemNarrowSpacePlayer,
 
119
                         NULL, 0,
 
120
                         methodNames, G_N_ELEMENTS (methodNames),
 
121
                         NULL);
 
122
 
 
123
totemNarrowSpacePlayer::totemNarrowSpacePlayer (NPP aNPP)
 
124
  : totemNPObject (aNPP),
 
125
    mPluginState (eState_Waiting)
 
126
{
 
127
  TOTEM_LOG_CTOR ();
 
128
}
 
129
 
 
130
totemNarrowSpacePlayer::~totemNarrowSpacePlayer ()
 
131
{
 
132
  TOTEM_LOG_DTOR ();
 
133
}
 
134
 
 
135
bool
 
136
totemNarrowSpacePlayer::InvokeByIndex (int aIndex,
 
137
                                       const NPVariant *argv,
 
138
                                       uint32_t argc,
 
139
                                       NPVariant *_result)
 
140
{
 
141
  TOTEM_LOG_INVOKE (aIndex, totemNarrowSpacePlayer);
 
142
 
 
143
  switch (Methods (aIndex)) {
 
144
    case ePlay:
 
145
      /* void Play (); */
 
146
      Plugin()->Command (TOTEM_COMMAND_PLAY);
 
147
      return VoidVariant (_result);
 
148
 
 
149
    case eStop:
 
150
      /* void Stop (); */
 
151
      Plugin()->Command (TOTEM_COMMAND_STOP);
 
152
      return VoidVariant (_result);
 
153
 
 
154
    case eRewind:
 
155
      /* void Rewind (); */
 
156
      Plugin()->Command (TOTEM_COMMAND_PAUSE);
 
157
      return VoidVariant (_result);
 
158
 
 
159
    case eGetMaxBytesLoaded:
 
160
      /* unsigned long GetMaxBytesLoaded (); */
 
161
      return Int32Variant (_result, Plugin()->BytesStreamed());
 
162
 
 
163
    case eGetMovieSize:
 
164
      /* unsigned long GetMovieSize (); */
 
165
      return Int32Variant (_result, Plugin()->BytesLength());
 
166
 
 
167
    case eGetAutoPlay:
 
168
      /* boolean GetAutoPlay (); */
 
169
      return BoolVariant (_result, Plugin()->AutoPlay());
 
170
 
 
171
    case eGetControllerVisible:
 
172
      /* boolean GetControllerVisible (); */
 
173
      return BoolVariant (_result, Plugin()->IsControllerVisible());
 
174
 
 
175
    case eGetIsLooping:
 
176
      /* boolean GetIsLooping (); */
 
177
      return BoolVariant (_result, Plugin()->IsLooping());
 
178
 
 
179
    case eGetKioskMode:
 
180
      /* boolean GetKioskMode (); */
 
181
      return BoolVariant (_result, Plugin()->IsKioskMode());
 
182
 
 
183
    case eGetLoopIsPalindrome:
 
184
      /* boolean GetLoopIsPalindrome (); */
 
185
      return BoolVariant (_result, Plugin()->IsLoopPalindrome());
 
186
 
 
187
    case eGetMute:
 
188
      /* boolean GetMute (); */
 
189
      return BoolVariant (_result, Plugin()->IsMute());
 
190
 
 
191
    case eGetPlayEveryFrame:
 
192
      /* boolean GetPlayEveryFrame (); */
 
193
      return BoolVariant (_result, Plugin()->PlayEveryFrame());
 
194
 
 
195
    case eSetAutoPlay: {
 
196
      /* void SetAutoPlay (in boolean autoPlay); */
 
197
      bool enabled;
 
198
      if (!GetBoolFromArguments (argv, argc, 0, enabled))
 
199
        return false;
 
200
 
 
201
      Plugin()->SetAutoPlay (enabled);
 
202
      return VoidVariant (_result);
 
203
    }
 
204
 
 
205
    case eSetControllerVisible: {
 
206
      /* void SetControllerVisible (in boolean visible); */
 
207
      bool enabled;
 
208
      if (!GetBoolFromArguments (argv, argc, 0, enabled))
 
209
        return false;
 
210
 
 
211
      Plugin()->SetControllerVisible (enabled);
 
212
      return VoidVariant (_result);
 
213
    }
 
214
 
 
215
    case eSetIsLooping: {
 
216
      /* void SetIsLooping (in boolean loop); */
 
217
      bool enabled;
 
218
      if (!GetBoolFromArguments (argv, argc, 0, enabled))
 
219
        return false;
 
220
 
 
221
      Plugin()->SetLooping (enabled);
 
222
      return VoidVariant (_result);
 
223
    }
 
224
 
 
225
    case eSetKioskMode: {
 
226
      /* void SetKioskMode (in boolean kioskMode); */
 
227
      bool enabled;
 
228
      if (!GetBoolFromArguments (argv, argc, 0, enabled))
 
229
        return false;
 
230
 
 
231
      Plugin()->SetKioskMode (enabled);
 
232
      return VoidVariant (_result);
 
233
    }
 
234
 
 
235
    case eSetLoopIsPalindrome: {
 
236
      /* void SetLoopIsPalindrome (in boolean loop); */
 
237
      bool enabled;
 
238
      if (!GetBoolFromArguments (argv, argc, 0, enabled))
 
239
        return false;
 
240
 
 
241
      Plugin()->SetLoopIsPalindrome (enabled);
 
242
      return VoidVariant (_result);
 
243
    }
 
244
 
 
245
    case eSetMute: {
 
246
      /* void SetMute (in boolean mute); */
 
247
      bool enabled;
 
248
      if (!GetBoolFromArguments (argv, argc, 0, enabled))
 
249
        return false;
 
250
 
 
251
      Plugin()->SetMute (enabled);
 
252
      return VoidVariant (_result);
 
253
    }
 
254
 
 
255
    case eSetPlayEveryFrame: {
 
256
      /* void SetPlayEveryFrame (in boolean playAll); */
 
257
      bool enabled;
 
258
      if (!GetBoolFromArguments (argv, argc, 0, enabled))
 
259
        return false;
 
260
 
 
261
      Plugin()->SetPlayEveryFrame (enabled);
 
262
      return VoidVariant (_result);
 
263
    }
 
264
 
 
265
    case eGetVolume:
 
266
      /* unsigned long GetVolume (); */
 
267
      return Int32Variant (_result, Plugin()->Volume() * 255.0);
 
268
 
 
269
    case eSetVolume: {
 
270
      /* void SetVolume (in unsigned long volume); */
 
271
      int32_t volume;
 
272
      if (!GetInt32FromArguments (argv, argc, 0, volume))
 
273
        return false;
 
274
 
 
275
      Plugin()->SetVolume ((double) CLAMP (volume, 0, 255) / 255.0);
 
276
      return VoidVariant (_result);
 
277
    }
 
278
 
 
279
    case eGetBgColor: {
 
280
      /* ACString GetBgColor (); */
 
281
      const char *color = Plugin()->BackgroundColor();
 
282
      if (color)
 
283
        return StringVariant (_result, color);
 
284
 
 
285
      return StringVariant (_result, "#000000");
 
286
    }
 
287
      
 
288
    case eSetBgColor: {
 
289
      /* void SetBgColor (in ACString color); */
 
290
      const char *color;
 
291
      if (!GetStringFromArguments (argv, argc, 0, color))
 
292
        return false;
 
293
 
 
294
      Plugin()->SetBackgroundColor (color);
 
295
      return VoidVariant (_result);
 
296
    }
 
297
 
 
298
    case eGetDuration:
 
299
      /* unsigned long GetDuration (); */
 
300
      return Int32Variant (_result, Plugin()->Duration());
 
301
 
 
302
    case eGetStartTime:
 
303
      /* unsigned long GetStartTime (); */
 
304
      TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
305
      return Int32Variant (_result, 0); /* FIXME */
 
306
 
 
307
    case eGetTime:
 
308
      /* unsigned long GetTime (); */
 
309
      return Int32Variant (_result, Plugin()->Time());
 
310
 
 
311
    case eGetEndTime:
 
312
      /* unsigned long GetEndTime (); */
 
313
      TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
314
      return Int32Variant (_result, 0);
 
315
 
 
316
    case eGetTimeScale:
 
317
      /* unsigned long GetTimeScale (); */
 
318
      return Int32Variant (_result, 1000); /* FIXME? */
 
319
 
 
320
    case eGetRate:
 
321
      /* float GetRate (); */
 
322
      return DoubleVariant (_result, Plugin()->Rate());
 
323
 
 
324
    case eSetRate: {
 
325
      /* void SetRate (in float rate); */
 
326
      double rate;
 
327
      if (!GetDoubleFromArguments (argv, argc, 0, rate))
 
328
        return false;
 
329
 
 
330
      Plugin()->SetRate (rate);
 
331
      return VoidVariant (_result);
 
332
    }
 
333
 
 
334
    case eGetLanguage:
 
335
      /* ACString GetLanguage (); */
 
336
      TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
337
      return StringVariant (_result, "English");
 
338
 
 
339
    case eGetComponentVersion:
 
340
      /* ACString GetComponentVersion (in ACString type, in ACString subType, in ACString manufacturer); */
 
341
      TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
342
      return StringVariant (_result, "1.0");
 
343
 
 
344
    case eGetIsQuickTimeRegistered:
 
345
      /* boolean GetIsQuickTimeRegistered (); */
 
346
      TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
347
    case eGetIsVRMovie:
 
348
      /* boolean GetIsVRMovie (); */
 
349
      return BoolVariant (_result, false);
 
350
 
 
351
    case eGetMIMEType:
 
352
      /* ACString GetMIMEType (); */
 
353
      return StringVariant (_result, "video/quicktime");
 
354
 
 
355
    case eGetMatrix:
 
356
      /* ACString GetMatrix (); */
 
357
      return StringVariant (_result, Plugin()->Matrix());
 
358
 
 
359
    case eSetMatrix: {
 
360
      /* void SetMatrix (in ACString matrix); */
 
361
      const char *matrix;
 
362
      if (!GetStringFromArguments (argv, argc, 0, matrix))
 
363
        return false;
 
364
 
 
365
      Plugin()->SetMatrix (matrix);
 
366
      return VoidVariant (_result);
 
367
    }
 
368
 
 
369
    case eGetMovieName:
 
370
      /* AUTF8String GetMovieName (); */
 
371
      return StringVariant (_result, Plugin()->MovieName());
 
372
 
 
373
    case eSetMovieName: {
 
374
      /* void SetMovieName (in AUTF8String movieName); */
 
375
      const char *name;
 
376
      if (!GetStringFromArguments (argv, argc, 0, name))
 
377
        return false;
 
378
 
 
379
      Plugin()->SetMovieName (name);
 
380
      return VoidVariant (_result);
 
381
    }
 
382
 
 
383
    case eGetRectangle:
 
384
      /* ACString GetRectangle (); */
 
385
      return StringVariant (_result, Plugin()->Rectangle());
 
386
 
 
387
    case eSetRectangle: {
 
388
      /* void SetRectangle (in ACString rect); */
 
389
      const char *rectangle;
 
390
      if (!GetStringFromArguments (argv, argc, 0, rectangle))
 
391
        return false;
 
392
 
 
393
      Plugin()->SetRectangle (rectangle);
 
394
      return VoidVariant (_result);
 
395
    }
 
396
 
 
397
    case eGetPluginStatus: {
 
398
      /* ACString GetPluginStatus (); */
 
399
      static const char *kState[] = {
 
400
        "Complete",
 
401
        NULL, /* "Error:<%d>", */
 
402
        "Loading",
 
403
        "Playable",
 
404
        "Waiting"
 
405
      };
 
406
 
 
407
      if (mPluginState == eState_Error)
 
408
        return StringVariant (_result, "Error:<1>");
 
409
 
 
410
      return StringVariant (_result, kState[mPluginState]);
 
411
    }
 
412
 
 
413
    case eGetTrackCount:
 
414
      /* unsigned long GetTrackCount (); */
 
415
      TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
416
      return Int32Variant (_result, 1);
 
417
 
 
418
    case eGetTrackEnabled:
 
419
      /* boolean GetTrackEnabled (in unsigned long index); */
 
420
      TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
421
      return BoolVariant (_result, true);
 
422
 
 
423
    case eGetPluginVersion:
 
424
      /* ACString GetPluginVersion (); */
 
425
    case eGetQuickTimeVersion:
 
426
      /* ACString GetQuickTimeVersion (); */
 
427
      return StringVariant (_result, TOTEM_NARROWSPACE_VERSION);
 
428
 
 
429
    case eGetQuickTimeConnectionSpeed:
 
430
      /* unsigned long GetQuickTimeConnectionSpeed (); */
 
431
      return Int32Variant (_result, Plugin()->Bandwidth());
 
432
 
 
433
    case eGetResetPropertiesOnReload:
 
434
      /* boolean GetResetPropertiesOnReload (); */
 
435
      return BoolVariant (_result, Plugin()->ResetPropertiesOnReload());
 
436
 
 
437
    case eSetResetPropertiesOnReload: {
 
438
      /* void SetResetPropertiesOnReload (in boolean reset); */
 
439
      bool enabled;
 
440
      if (!GetBoolFromArguments (argv, argc, 0, enabled))
 
441
        return false;
 
442
 
 
443
      Plugin()->SetResetPropertiesOnReload (enabled);
 
444
      return VoidVariant (_result);
 
445
    }
 
446
 
 
447
    case eGetMaxTimeLoaded:
 
448
      /* unsigned long GetMaxTimeLoaded (); */
 
449
    case eGetMovieID:
 
450
      /* unsigned long GetMovieID (); */
 
451
    case eGetNodeCount:
 
452
      /* unsigned long GetNodeCount (); */
 
453
    case eGetNodeID:
 
454
      /* unsigned long GetNodeID (); */
 
455
      TOTEM_WARN_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
456
      return Int32Variant (_result, 0);
 
457
 
 
458
    case eGetFieldOfView:
 
459
      /* float GetFieldOfView (); */
 
460
    case eGetPanAngle:
 
461
      /* float GetPanAngle (); */
 
462
    case eGetTiltAngle:
 
463
      /* float GetTiltAngle (); */
 
464
      TOTEM_WARN_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
465
      return DoubleVariant (_result, 0.0);
 
466
 
 
467
    case eGetTrackName:
 
468
      /* AUTF8String GetTrackName (in unsigned long index); */
 
469
    case eGetTrackType:
 
470
      /* ACString GetTrackType (in unsigned long index); */
 
471
    case eGetHotpotTarget:
 
472
      /* AUTF8String GetHotspotTarget (in unsigned long hotspotID); */
 
473
    case eGetHotpotUrl:
 
474
      /* AUTF8String GetHotspotUrl (in unsigned long hotspotID); */
 
475
    case eGetHREF:
 
476
      /* AUTF8String GetHREF (); */
 
477
    case eGetQTNextUrl:
 
478
      /* AUTF8String GetQTNEXTUrl (in unsigned long index); */
 
479
    case eGetQuickTimeLanguage:
 
480
      /* ACString GetQuickTimeLanguage (); */
 
481
    case eGetSpriteTrackVariable:
 
482
      /* ACString GetSpriteTrackVariable (in unsigned long trackIndex, in unsigned long variableIndex); */
 
483
    case eGetTarget:
 
484
      /* AUTF8String GetTarget (); */
 
485
    case eGetURL:
 
486
      /* AUTF8String GetURL (); */
 
487
    case eGetUserData:
 
488
      /* AUTF8String GetUserData (in ACString type); */
 
489
      TOTEM_WARN_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
490
      return StringVariant (_result, "");
 
491
 
 
492
    case eGoPreviousNode:
 
493
      /* void GoPreviousNode (); */
 
494
    case eSetEndTime:
 
495
      /* void SetEndTime (in unsigned long time); */
 
496
    case eSetFieldOfView:
 
497
      /* void SetFieldOfView (in float fov); */
 
498
    case eSetHotpotTarget:
 
499
      /* void SetHotspotTarget (in unsigned long hotspotID, in AUTF8String target); */
 
500
    case eSetHotpotUrl:
 
501
      /* void SetHotspotUrl (in unsigned long hotspotID, in AUTF8String url); */
 
502
    case eSetHREF:
 
503
      /* void SetHREF (in AUTF8String url); */
 
504
    case eSetLanguage:
 
505
      /* void SetLanguage (in ACString language); */
 
506
    case eSetMovieID:
 
507
      /* void SetMovieID (in unsigned long movieID); */
 
508
    case eSetNodeID:
 
509
      /* void SetNodeID (in unsigned long id); */
 
510
    case eSetPanAngle:
 
511
      /* void SetPanAngle (in float angle); */
 
512
    case eSetQTNextUrl:
 
513
      /* void SetQTNEXTUrl (in unsigned long index, in AUTF8String url); */
 
514
    case eSetSpriteTrackVariable:
 
515
      /* void SetSpriteTrackVariable (in unsigned long trackIndex, in unsigned long variableIndex, in ACString value); */
 
516
    case eSetStartTime:
 
517
      /* void SetStartTime (in unsigned long time); */
 
518
    case eSetTarget:
 
519
      /* void SetTarget (in AUTF8String target); */
 
520
    case eSetTiltAngle:
 
521
      /* void SetTiltAngle (in float angle); */
 
522
    case eSetTime:
 
523
      /* void SetTime (in unsigned long time); */
 
524
    case eSetTrackEnabled:
 
525
      /* void SetTrackEnabled (in unsigned long index, in boolean enabled); */
 
526
    case eSetURL:
 
527
      /* void SetURL (in AUTF8String url); */
 
528
    case eStep:
 
529
      /* void Step (in long count); */
 
530
    case eShowDefaultView:
 
531
      /* void ShowDefaultView (); */
 
532
      TOTEM_WARN_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
 
533
      return VoidVariant (_result);
 
534
  }
 
535
 
 
536
  return false;
 
537
}