Closed Bug 192440 Opened 18 years ago Closed 8 years ago

Some Flash ads do not have controls; can we make Flash "repeat once" like animated GIFs?

Categories

(Core :: Plug-ins, enhancement, P5)

x86
Windows 2000
enhancement

Tracking

()

RESOLVED WONTFIX
Future

People

(Reporter: ken, Assigned: peterlubczynski-bugs)

References

()

Details

Attachments

(3 files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3a) Gecko/20021212
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3a) Gecko/20021212

There's a Flash ad at LinuxToday.com which doesn't have controls; right clicking
just gives the "About Macromedia Flash Player 6" option (and a greyed-out
"Settings").

In Preferences, Privacy and Security, Images, there's a radio choice: "Animated
images should loop:

o As many times as the image specifies
o Once
o Never"

Would it be possible to do something similar for Flash animations which have
their controls disabled?  

Movement in one's peripheral vision is distracting and inhibits the reading process.

Reproducible: Always

Steps to Reproduce:
1. Go to LinuxToday.com
2. View the Flash ad (on the right, below the "Login" and "Create" buttons and
above the BRU ad)
3. Try to get it to stop moving
-> wontfix

there is no way unless macromedia adds this.
we can disable loading flash but that is another bug (already filed).
Status: UNCONFIRMED → RESOLVED
Closed: 18 years ago
Resolution: --- → WONTFIX
hm...I've been thinking about this and I think it's remotly possible by
scripting Flash. Some privileged JS could enummerate over all the Flash objects
in all the windows and call something like StopPlay() and GotoFrame(). Here are
the methods Flash 6 exposes:

C:\nstrunk\Plugins>xpt_dump flashplayer.xpt
Header:
   Major version:         1
   Minor version:         2
   Number of interfaces:  3
   Annotations:
      Annotation #0 is empty.

Interface Directory:
   - ::nsISupports (00000000-0000-0000-c000-000000000046):
      [Unresolved]
   - ::FlashIObject (42b1d5a4-6c2b-11d6-8063-0005029bc257):
      Parent: ::nsISupports
      Flags:
         Scriptable: TRUE
         Function: FALSE
      Methods:
         uint32 evaluate(in string, out retval FlashIObject);
      Constants:
         No Constants
   - ::FlashIScriptablePlugin (d458fe9c-518c-11d6-84cb-0005029bc257):
      Parent: ::nsISupports
      Flags:
         Scriptable: TRUE
         Function: FALSE
      Methods:
         uint32 IsPlaying(out retval boolean);
         uint32 Play();
         uint32 StopPlay();
         uint32 TotalFrames(out retval int32);
         uint32 CurrentFrame(out retval int32);
         uint32 GotoFrame(in int32);
         uint32 Rewind();
         uint32 Back();
         uint32 Forward();
         uint32 Pan(in int32, in int32, in int32);
         uint32 PercentLoaded(out retval int32);
         uint32 FrameLoaded(in int32, out retval boolean);
         uint32 FlashVersion(out retval int32);
         uint32 Zoom(in int32);
         uint32 SetZoomRect(in int32, in int32, in int32, in int32);
         uint32 LoadMovie(in int32, in wstring);
         uint32 TGotoFrame(in wstring, in int32);
         uint32 TGotoLabel(in wstring, in wstring);
         uint32 TCurrentFrame(in wstring, out retval int32);
         uint32 TCurrentLabel(in wstring, out retval wstring);
         uint32 TPlay(in wstring);
         uint32 TStopPlay(in wstring);
         uint32 SetVariable(in wstring, in wstring);
         uint32 GetVariable(in wstring, out retval wstring);
         uint32 TSetProperty(in wstring, in int32, in wstring);
         uint32 TGetProperty(in wstring, in int32, out retval wstring);
         uint32 TGetPropertyAsNumber(in wstring, in int32, out retval double);
         uint32 TCallLabel(in wstring, in wstring);
         uint32 TCallFrame(in wstring, in int32);
         uint32 SetWindow(in FlashIObject, in int32);
      Constants:
         No Constants
I'm reopening this based on comment #2 From Peter Lubczynski -- it appears to be
possible.

I'd imagine one of the following could be used to uncheck the "Loop" option, for
the "run once" functionality:

uint32 SetVariable(in wstring, in wstring);
uint32 TSetProperty(in wstring, in int32, in wstring);
uint32 SetWindow(in FlashIObject, in int32);
Status: RESOLVED → UNCONFIRMED
Resolution: WONTFIX → ---
Comment #4 and the attachment ("Life Choices"? -- and comment #1 did not
reference any gif) appears to be spam.

I've found a workaround for this which is very acceptable: the autoscroll plugin
(see http://autoscroll.mozdev.org/ ) disables Flash animations when you click
the mouse wheel.  So on a page with a ton of ads (LinuxToday.com), just click
the middle mouse wheel and then move down slightly to start the page scrolling
slowly.

The other benefit to this is I can generally keep up with the page at the
slowest scrolling speed, whereas using the mouse wheel causes the screen to jump
and I have to find my place again.

So my request: how about a button (or a right-click menu option), "Disable Flash
on this page" -- which does exactly what the autoscroll plugin does when you
click the mouse wheel?

(I just grabbed the autoscroll code via CVS and grepped for "Flash" but didn't
find anything so I'm not sure how it actually disables the Flash animations --
but it does.  I'm currently running 1.3 -- Mozilla/5.0 (Windows; U; Windows NT
5.0; en-US; rv:1.3) Gecko/20030312.)
I just created two attachments, one showing a page with Flash ads and the other
showing the same page after clicking the mouse wheel to start autoscroll.  This
demonstrates the workaround which autoscroll allows.

(Minor pet peeve: the filename ends with ".PNG".  Why can't Bugzilla
auto-select the "Content Type"?)
--->future

Hm...perhaps one way to see if a certain elemenet is hosting Flash is to QI for
the Flash scripting interface.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Priority: -- → P5
Target Milestone: --- → Future
Would it be possible to not pass on the right-click to the plugin, so that the
standard Mozilla context-menu appears, which could then contain an additional
option called something along the lines of "Pass on right-click" or, for plugins
which we know use the right-click to activate a context menu, perhaps we could
call it "Plugin Context menu". Then the Mozilla context menu could also include
an option to disable or pause the plugin or do various things to filter the
plugin type / source. (See Bugs 94035, Bug 169330, and the many they reference
for ideas on what to do with flash & other plugins)
Blocks: useragent
QA Contact: shrir → plugins
Status: NEW → RESOLVED
Closed: 18 years ago8 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.