3 <style type=
"text/css">
5 border: 1px solid black
;
8 embed:-moz-handler-disabled
,
9 object:-moz-handler-disabled
{
10 border-style: dotted
!important
;
13 embed:-moz-handler-blocked
,
14 object:-moz-handler-blocked
{
15 border-style: dashed
!important
;
18 embed:-moz-type-unsupported
,
19 object:-moz-type-unsupported
{
20 border-style: none
!important
;
23 <script type=
"text/javascript">
24 function unknown_plugin_detected(event
) {
25 window
.parent
.unknown_plugin_detected(event
);
28 function blocked_plugin_detected(event
) {
29 window
.parent
.blocked_plugin_detected(event
);
32 function disabled_plugin_detected(event
) {
33 window
.parent
.disabled_plugin_detected(event
);
36 document
.addEventListener("PluginNotFound", unknown_plugin_detected
, true);
37 document
.addEventListener("PluginDisabled", disabled_plugin_detected
, true);
38 document
.addEventListener("PluginBlocklisted", blocked_plugin_detected
, true);
42 <!-- Embeds always fire events and have the pseudo class attached -->
43 <div><embed id=
"plugin1" style=
"width: 100px; height: 100px" type=
"application/x-test"></div>
44 <div><embed id=
"plugin2" style=
"width: 100px; height: 100px" src=
"data:application/x-test,test"></div>
46 <!-- So do objects with no content and no pluginurl -->
47 <div><object id=
"plugin3" style=
"width: 100px; height: 100px" type=
"application/x-test"></object></div>
48 <div><object id=
"plugin4" style=
"width: 100px; height: 100px" data=
"data:application/x-test,test"></object></div>
50 <!-- The mimetype of the actual data is supposed to be used in preference -->
51 <div><embed id=
"plugin5" style=
"width: 100px; height: 100px" type=
"application/x-unknown" src=
"data:application/x-test,test"></div>
52 <div><object id=
"plugin6" style=
"width: 100px; height: 100px" type=
"application/x-unknown" data=
"data:application/x-test,test"></object></div>
54 <!-- Params are not considered content -->
55 <div><object id=
"plugin7" style=
"width: 100px; height: 100px" type=
"application/x-test">
56 <param name=
"foo" value=
"bar">
58 <div><object id=
"plugin8" style=
"width: 100px; height: 100px" data=
"data:application/x-test,test">
59 <param name=
"foo" value=
"bar">
62 <!-- Nor is whitespace -->
63 <div><object id=
"plugin9" style=
"width: 100px; height: 100px" type=
"application/x-test">
67 <div><object id=
"plugin10" style=
"width: 100px; height: 100px" data=
"data:application/x-test,test">
72 <!-- Pluginurl forces the psuedo class and error event regardless of content -->
73 <div><object id=
"plugin11" style=
"width: 100px; height: 100px" type=
"application/x-test">
74 <param name=
"pluginurl" value=
"http://foo">
75 <p>Fallback content
</p>
77 <div><object id=
"plugin12" style=
"width: 100px; height: 100px" data=
"data:application/x-test,test">
78 <param name=
"pluginurl" value=
"http://foo">
79 <p>Fallback content
</p>
82 <!-- No errors or psuedo classes for objects with fallback content -->
83 <div><object id=
"fallback1" style=
"width: 100px; height: 100px" type=
"application/x-test">
84 <p>Fallback content
</p>
86 <div><object id=
"fallback2" style=
"width: 100px; height: 100px" data=
"data:application/x-test,test">
87 <p>Fallback content
</p>
90 <!-- Even other plugins are considered content so no errors dispatched from these
91 objects, but the inner embeds do get processed -->
92 <div><object id=
"fallback3" style=
"width: 100px; height: 100px" type=
"application/x-test">
93 <embed id=
"plugin13" style=
"width: 100px; height: 100px" type=
"application/x-test">
95 <div><object id=
"fallback4" style=
"width: 100px; height: 100px" data=
"data:application/x-test,test">
96 <embed id=
"plugin14" style=
"width: 100px; height: 100px" type=
"application/x-test">