[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/3.5/kdelibs/khtml/rendering
From:       Koos Vriezen <koos.vriezen () xs4all ! nl>
Date:       2006-07-03 20:24:32
Message-ID: 1151958272.319822.9815.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 557699 by vriezen:

Restore that object elements should have an URL, but like 
http://www.w3.org/TR/html4/struct/objects.html suggests, if there is a 
CLASSID attr. and we found a servicetype, allow than an empty URL.
(w/o the servicetype check, Germain found this error case
  data:text/html,<object  classid="whatever" style="border:solid red
     1px">alternative is rendered</object>
 where service type becomes text/html in the KHTMLPart object loading)


 M  +12 -7     render_frames.cpp  


--- branches/KDE/3.5/kdelibs/khtml/rendering/render_frames.cpp #557698:557699
@@ -757,6 +757,7 @@
       params.append( \
QString::fromLatin1("__KHTML__PLUGINBASEURL=\"%1\"").arg(element()->getDocument()->baseURL().url()));
  
       HTMLEmbedElementImpl *embed = 0;
+      QString classId;
       QString serviceType = objbase->serviceType;
       if ( element()->id() == ID_EMBED ) {
 
@@ -771,8 +772,9 @@
                   embed = static_cast<HTMLEmbedElementImpl *>( child );
                   break;
               }
+          classId = objbase->classId;
 
-          params.append( QString::fromLatin1("__KHTML__CLASSID=\"%1\"").arg( \
objbase->classId ) ); +          params.append( \
                QString::fromLatin1("__KHTML__CLASSID=\"%1\"").arg( classId ) );
           params.append( QString::fromLatin1("__KHTML__CODEBASE=\"%1\"").arg( \
objbase->getAttribute(ATTR_CODEBASE).string() ) );  if \
                (!objbase->getAttribute(ATTR_WIDTH).isEmpty())
               params.append( QString::fromLatin1("WIDTH=\"%1\"").arg( \
objbase->getAttribute(ATTR_WIDTH).string() ) ); @@ -805,7 +807,7 @@
               serviceType = "application/x-activex-handler";
 #endif
 
-              if(objbase->classId.find(QString::fromLatin1("D27CDB6E-AE6D-11cf-96B8-444553540000")) \
>= 0) { +              \
> if(classId.find(QString::fromLatin1("D27CDB6E-AE6D-11cf-96B8-444553540000")) >= 0) \
> {
                   // It is ActiveX, but the nsplugin system handling
                   // should also work, that's why we don't override the
                   // serviceType with application/x-activex-handler
@@ -814,17 +816,17 @@
                   // with nspluginviewer (Niko)
                   serviceType = "application/x-shockwave-flash";
               }
-              else if(objbase->classId.find(QString::fromLatin1("CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA")) \
>= 0) +              else \
> if(classId.find(QString::fromLatin1("CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA")) >= 0)
                   serviceType = "audio/x-pn-realaudio-plugin";
-              else if(objbase->classId.find(QString::fromLatin1("8AD9C840-044E-11D1-B3E9-00805F499D93")) \
>= 0 || +              else \
> if(classId.find(QString::fromLatin1("8AD9C840-044E-11D1-B3E9-00805F499D93")) >= 0 \
> ||
                       \
objbase->classId.find(QString::fromLatin1("CAFEEFAC-0014-0000-0000-ABCDEFFEDCBA")) >= \
0)  serviceType = "application/x-java-applet";
               // http://www.apple.com/quicktime/tools_tips/tutorials/activex.html
-              else if(objbase->classId.find(QString::fromLatin1("02BF25D5-8C17-4B23-BC80-D3488ABDDC6B")) \
>= 0) +              else \
> if(classId.find(QString::fromLatin1("02BF25D5-8C17-4B23-BC80-D3488ABDDC6B")) >= 0)
                   serviceType = "video/quicktime";
               // http://msdn.microsoft.com/library/en-us/dnwmt/html/adding_windows_media_to_web_pages__etse.asp?frame=true
                
               else if(objbase->classId.find(QString::fromLatin1("6BF52A52-394A-11d3-B153-00C04F79FAA6")) \
                >= 0 ||
-                      \
objbase->classId.find(QString::fromLatin1("22D6f312-B0F6-11D0-94AB-0080C74C7E95")) >= \
0) +                      \
classId.find(QString::fromLatin1("22D6f312-B0F6-11D0-94AB-0080C74C7E95")) >= 0)  \
serviceType = "video/x-msvideo";  
               else
@@ -833,7 +835,10 @@
               // TODO: add more plugins here
           }
       }
-      if (!document()->isURLAllowed(url) || !part->requestObject( this, url, \
serviceType, params )) +      if ((url.isEmpty() && !embed &&
+                  (serviceType.isEmpty() || classId.isEmpty())) ||
+              !document()->isURLAllowed(url) ||
+              !part->requestObject( this, url, serviceType, params ))
           objbase->renderAlternative();
   }
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic