summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2010-03-04 15:37:18 +0100
committerAndrea Diamantini <adjam7@gmail.com>2010-03-04 15:37:18 +0100
commitc9813c11a0c8a928d8fac4eb63efd29eec50047d (patch)
treed46e841c88f75adf0e519975320f48821acaec64
parentdelete clicktoflash object just when detection doesn't fail. (diff)
downloadrekonq-c9813c11a0c8a928d8fac4eb63efd29eec50047d.tar.xz
Fix Click to Flash.
In my tests it doesn't crash anymore and works ever well :) (Please, don't wake up me if this is just aa dream..)
-rw-r--r--src/clicktoflash.cpp54
-rw-r--r--src/clicktoflash.h3
-rw-r--r--src/webpluginfactory.cpp2
3 files changed, 38 insertions, 21 deletions
diff --git a/src/clicktoflash.cpp b/src/clicktoflash.cpp
index 24f8740e..3c284b3f 100644
--- a/src/clicktoflash.cpp
+++ b/src/clicktoflash.cpp
@@ -31,6 +31,7 @@
// KDE Includes
#include <KLocalizedString>
+#include <KDebug>
// Qt Includes
#include <QWebFrame>
@@ -89,28 +90,11 @@ void ClickToFlash::load()
elements.append(docElement.findAll(selector.arg(QLatin1String("object"))));
elements.append(docElement.findAll(selector.arg(QLatin1String("embed"))));
- bool isRightElement = false;
foreach (QWebElement element, elements)
{
- // TODO : find a proper solution to compare a QWebElement with a plugin
- // With this "manual" test, it's probably not working everywhere
- if(QUrl(element.attribute("data")) == m_url
- || QUrl(element.attribute("src")) == m_url)
- isRightElement = true;
- else
- {
- QWebElementCollection collec = element.findAll("param");
- int i = 0;
- while(i < collec.count() && isRightElement == false)
- {
- if(QUrl(collec.at(i).attribute("value")) == m_url)
- isRightElement = true;
- i++;
- }
- }
-
- if(isRightElement)
+ if( checkElement(element) )
{
+ kDebug() << "RETURNED TRUE ...........................";
QWebElement substitute = element.clone();
emit signalLoadClickToFlash(true);
element.replace(substitute);
@@ -118,9 +102,39 @@ void ClickToFlash::load()
return;
}
}
-
frames += frame->childFrames();
}
}
+bool ClickToFlash::checkElement(QWebElement el)
+{
+ kDebug() << "src: " << QUrl(el.attribute("src"));
+ kDebug() << "url: " << m_url;
+
+ QString checkString;
+ QString urlString;
+
+ checkString = QUrl(el.attribute("src")).toString( QUrl::RemoveQuery );
+ urlString = m_url.toString( QUrl::RemoveQuery );
+
+ if( urlString.contains( checkString ) )
+ return true;
+
+ QWebElementCollection collec = el.findAll("*");
+ int i = 0;
+ while( i < collec.count() )
+ {
+ QWebElement el = collec.at(i);
+
+ checkString = QUrl(el.attribute("src")).toString( QUrl::RemoveQuery );
+ urlString = m_url.toString( QUrl::RemoveQuery );
+
+ if( urlString.contains( checkString ) )
+ return true;
+
+ i++;
+ }
+
+ return false;
+}
diff --git a/src/clicktoflash.h b/src/clicktoflash.h
index 2284ec7e..7d6c4e05 100644
--- a/src/clicktoflash.h
+++ b/src/clicktoflash.h
@@ -35,6 +35,7 @@
// Qt Includes
#include <QWidget>
#include <QUrl>
+#include <QWebElement>
// Forward Declarations
class WebPluginFactory;
@@ -54,6 +55,8 @@ private slots:
void load();
private:
+ bool checkElement(QWebElement el);
+
/**
used to find the right QWebElement between the ones of the different plugins
*/
diff --git a/src/webpluginfactory.cpp b/src/webpluginfactory.cpp
index c8060969..9e4b8ba3 100644
--- a/src/webpluginfactory.cpp
+++ b/src/webpluginfactory.cpp
@@ -79,7 +79,7 @@ QObject *WebPluginFactory::create(const QString &mimeType,
if( _loadClickToFlash )
{
emit signalLoadClickToFlash(false);
- return KWebPluginFactory::create(mimeType, url, argumentNames, argumentValues);
+ return 0; //KWebPluginFactory::create(mimeType, url, argumentNames, argumentValues);
}
else
{