summaryrefslogtreecommitdiff
path: root/Tools/MiniBrowser
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-01-11 10:03:25 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2012-01-11 10:03:25 +0100
commitd11f84f5b5cdc0d92a08af01b13472fdd5f9acb9 (patch)
treeb318cf594dc1da2fa48224005945c9157f35bb41 /Tools/MiniBrowser
parent6300a96eca9f152b379f1bcf3d9efdc5572d989a (diff)
downloadqtwebkit-d11f84f5b5cdc0d92a08af01b13472fdd5f9acb9.tar.gz
Imported WebKit commit 75bb2fc5882d2e1b3d5572c2961507996cbca5e3 (http://svn.webkit.org/repository/webkit/trunk@104681)
Diffstat (limited to 'Tools/MiniBrowser')
-rw-r--r--Tools/MiniBrowser/gtk/GNUmakefile.am3
-rw-r--r--Tools/MiniBrowser/qt/BrowserWindow.cpp10
-rw-r--r--Tools/MiniBrowser/qt/BrowserWindow.h2
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowser.qrc1
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowserApplication.cpp19
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowserApplication.h19
-rw-r--r--Tools/MiniBrowser/qt/icons/touch.pngbin0 -> 6803 bytes
-rw-r--r--Tools/MiniBrowser/qt/main.cpp4
-rw-r--r--Tools/MiniBrowser/qt/qml/BrowserWindow.qml49
-rw-r--r--Tools/MiniBrowser/win/BrowserView.cpp4
-rw-r--r--Tools/MiniBrowser/win/BrowserWindow.cpp2
11 files changed, 87 insertions, 26 deletions
diff --git a/Tools/MiniBrowser/gtk/GNUmakefile.am b/Tools/MiniBrowser/gtk/GNUmakefile.am
index cf3994a57..8a3b87e0f 100644
--- a/Tools/MiniBrowser/gtk/GNUmakefile.am
+++ b/Tools/MiniBrowser/gtk/GNUmakefile.am
@@ -58,4 +58,5 @@ stamp-mini-browser-marshal.h: $(MiniBrowser_marshal_list)
echo timestamp > $(@F)
EXTRA_DIST += \
- $(minibrowser_marshal_list)
+ $(srcdir)/Tools/MiniBrowser/gtk/browser-marshal.list
+
diff --git a/Tools/MiniBrowser/qt/BrowserWindow.cpp b/Tools/MiniBrowser/qt/BrowserWindow.cpp
index 29bf58aee..9ccb8a263 100644
--- a/Tools/MiniBrowser/qt/BrowserWindow.cpp
+++ b/Tools/MiniBrowser/qt/BrowserWindow.cpp
@@ -76,6 +76,16 @@ void BrowserWindow::load(const QString& url)
QMetaObject::invokeMethod(rootObject(), "load", Qt::DirectConnection, Q_ARG(QVariant, completedUrl));
}
+void BrowserWindow::reload()
+{
+ QMetaObject::invokeMethod(rootObject(), "reload", Qt::DirectConnection);
+}
+
+void BrowserWindow::focusAddressBar()
+{
+ QMetaObject::invokeMethod(rootObject(), "focusAddressBar", Qt::DirectConnection);
+}
+
BrowserWindow* BrowserWindow::newWindow(const QString& url)
{
BrowserWindow* window = new BrowserWindow();
diff --git a/Tools/MiniBrowser/qt/BrowserWindow.h b/Tools/MiniBrowser/qt/BrowserWindow.h
index e697c7548..9593e1014 100644
--- a/Tools/MiniBrowser/qt/BrowserWindow.h
+++ b/Tools/MiniBrowser/qt/BrowserWindow.h
@@ -42,6 +42,8 @@ public:
BrowserWindow(WindowOptions* = 0);
~BrowserWindow();
void load(const QString& url);
+ void reload();
+ void focusAddressBar();
QQuickWebView* webView() const;
void updateVisualMockTouchPoints(const QList<QWindowSystemInterface::TouchPoint>& touchPoints);
diff --git a/Tools/MiniBrowser/qt/MiniBrowser.qrc b/Tools/MiniBrowser/qt/MiniBrowser.qrc
index b50609398..20a9400c6 100644
--- a/Tools/MiniBrowser/qt/MiniBrowser.qrc
+++ b/Tools/MiniBrowser/qt/MiniBrowser.qrc
@@ -5,6 +5,7 @@
<file>icons/previous.png</file>
<file>icons/refresh.png</file>
<file>icons/stop.png</file>
+ <file>icons/touch.png</file>
<file>icons/touchpoint.png</file>
<file>qml/AlertDialog.qml</file>
<file>qml/BrowserWindow.qml</file>
diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp
index 0ea3c3b78..265436505 100644
--- a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp
+++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp
@@ -63,12 +63,12 @@ static inline bool isMouseEvent(const QEvent* event)
MiniBrowserApplication::MiniBrowserApplication(int& argc, char** argv)
: QApplication(argc, argv)
- , m_windowOptions(this)
, m_realTouchEventReceived(false)
, m_pendingFakeTouchEventCount(0)
, m_isRobotized(false)
, m_robotTimeoutSeconds(0)
, m_robotExtraTimeSeconds(0)
+ , m_windowOptions(this)
{
setOrganizationName("Nokia");
setApplicationName("QtMiniBrowser");
@@ -82,7 +82,7 @@ bool MiniBrowserApplication::notify(QObject* target, QEvent* event)
// We try to be smart, if we received real touch event, we are probably on a device
// with touch screen, and we should not have touch mocking.
- if (!event->spontaneous() || m_realTouchEventReceived)
+ if (!event->spontaneous() || m_realTouchEventReceived || !m_windowOptions.touchMockingEnabled())
return QApplication::notify(target, event);
if (isTouchEvent(event) && static_cast<QTouchEvent*>(event)->deviceType() == QTouchEvent::TouchScreen) {
@@ -97,6 +97,21 @@ bool MiniBrowserApplication::notify(QObject* target, QEvent* event)
if (!browserWindow)
return QApplication::notify(target, event);
+ // In QML events are propagated through parents. But since the WebView
+ // may consume key events, a shortcut might never reach the top QQuickItem.
+ // Therefore we are checking here for shortcuts.
+ if (event->type() == QEvent::KeyPress) {
+ QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
+ if ((keyEvent->key() == Qt::Key_R && keyEvent->modifiers() == Qt::ControlModifier) || keyEvent->key() == Qt::Key_F5) {
+ browserWindow->reload();
+ return true;
+ }
+ if ((keyEvent->key() == Qt::Key_L && keyEvent->modifiers() == Qt::ControlModifier) || keyEvent->key() == Qt::Key_F6) {
+ browserWindow->focusAddressBar();
+ return true;
+ }
+ }
+
if (event->type() == QEvent::KeyRelease && static_cast<QKeyEvent*>(event)->key() == Qt::Key_Control) {
foreach (int id, m_heldTouchPoints)
if (m_touchPoints.contains(id))
diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.h b/Tools/MiniBrowser/qt/MiniBrowserApplication.h
index 719c79de6..43f83cfe1 100644
--- a/Tools/MiniBrowser/qt/MiniBrowserApplication.h
+++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.h
@@ -45,6 +45,7 @@ class WindowOptions : public QObject {
Q_PROPERTY(bool printLoadedUrls READ printLoadedUrls)
Q_PROPERTY(bool useTraditionalDesktopBehavior READ useTraditionalDesktopBehavior)
Q_PROPERTY(bool startMaximized READ startMaximized)
+ Q_PROPERTY(bool touchMockingEnabled READ touchMockingEnabled WRITE setTouchMockingEnabled NOTIFY touchMockingEnabledChanged)
public:
WindowOptions(QObject* parent = 0)
@@ -52,6 +53,7 @@ public:
, m_printLoadedUrls(false)
, m_useTraditionalDesktopBehavior(false)
, m_startMaximized(false)
+ , m_touchMockingEnabled(true)
, m_windowSize(QSize(980, 735))
{
}
@@ -66,12 +68,24 @@ public:
bool startFullScreen() const { return m_startFullScreen; }
void setRequestedWindowSize(const QSize& size) { m_windowSize = size; }
QSize requestedWindowSize() const { return m_windowSize; }
+ bool touchMockingEnabled() const { return m_touchMockingEnabled; }
+ void setTouchMockingEnabled(bool enabled)
+ {
+ if (enabled != m_touchMockingEnabled) {
+ m_touchMockingEnabled = enabled;
+ emit touchMockingEnabledChanged();
+ }
+ }
+
+signals:
+ void touchMockingEnabledChanged();
private:
bool m_printLoadedUrls;
bool m_useTraditionalDesktopBehavior;
bool m_startMaximized;
bool m_startFullScreen;
+ bool m_touchMockingEnabled;
QSize m_windowSize;
};
@@ -84,8 +98,7 @@ public:
bool isRobotized() const { return m_isRobotized; }
int robotTimeout() const { return m_robotTimeoutSeconds; }
int robotExtraTime() const { return m_robotExtraTimeSeconds; }
-
- WindowOptions m_windowOptions;
+ WindowOptions* windowOptions() { return &m_windowOptions; }
virtual bool notify(QObject*, QEvent*);
@@ -103,6 +116,8 @@ private:
QHash<int, QWindowSystemInterface::TouchPoint> m_touchPoints;
QSet<int> m_heldTouchPoints;
+
+ WindowOptions m_windowOptions;
};
QML_DECLARE_TYPE(WindowOptions);
diff --git a/Tools/MiniBrowser/qt/icons/touch.png b/Tools/MiniBrowser/qt/icons/touch.png
new file mode 100644
index 000000000..182ae0fe8
--- /dev/null
+++ b/Tools/MiniBrowser/qt/icons/touch.png
Binary files differ
diff --git a/Tools/MiniBrowser/qt/main.cpp b/Tools/MiniBrowser/qt/main.cpp
index 26877ae77..feae14ade 100644
--- a/Tools/MiniBrowser/qt/main.cpp
+++ b/Tools/MiniBrowser/qt/main.cpp
@@ -45,7 +45,7 @@ int main(int argc, char** argv)
MiniBrowserApplication app(argc, argv);
if (app.isRobotized()) {
- BrowserWindow* window = new BrowserWindow(&app.m_windowOptions);
+ BrowserWindow* window = new BrowserWindow(app.windowOptions());
UrlLoader loader(window, app.urls().at(0), app.robotTimeout(), app.robotExtraTime());
loader.loadNext();
window->show();
@@ -62,7 +62,7 @@ int main(int argc, char** argv)
urls.append("http://www.google.com");
}
- BrowserWindow* window = new BrowserWindow(&app.m_windowOptions);
+ BrowserWindow* window = new BrowserWindow(app.windowOptions());
window->load(urls.at(0));
for (int i = 1; i < urls.size(); ++i)
diff --git a/Tools/MiniBrowser/qt/qml/BrowserWindow.qml b/Tools/MiniBrowser/qt/qml/BrowserWindow.qml
index 0d73dceca..c2c673aa1 100644
--- a/Tools/MiniBrowser/qt/qml/BrowserWindow.qml
+++ b/Tools/MiniBrowser/qt/qml/BrowserWindow.qml
@@ -41,6 +41,10 @@ Rectangle {
webView.load(address)
}
+ function reload() {
+ webView.reload()
+ }
+
function focusAddressBar() {
addressLine.forceActiveFocus()
addressLine.selectAll()
@@ -151,11 +155,9 @@ Rectangle {
onReleased: { parent.color = "#efefef" }
onClicked: {
if (webView.loading) {
- console.log("stop loading")
webView.stop()
} else {
- console.log("reloading")
- webView.reload()
+ reload()
}
}
}
@@ -180,6 +182,33 @@ Rectangle {
}
}
}
+
+ Rectangle {
+ id: touchEventsButton
+ height: parent.height
+ width: height
+ color: "#efefef"
+ radius: 6
+
+ Image {
+ anchors.centerIn: parent
+ opacity: options.touchMockingEnabled ? 0.6 : 0.1
+ source: "../icons/touch.png"
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ if (options.touchMockingEnabled) {
+ console.log("Touch Mocking Disabled")
+ } else {
+ console.log("Touch Mocking Enabled")
+ }
+
+ options.touchMockingEnabled = !options.touchMockingEnabled
+ }
+ }
+ }
}
Rectangle {
color: "white"
@@ -234,13 +263,6 @@ Rectangle {
console.log("going to: ", addressLine.text)
webView.load(utils.urlFromUserInput(addressLine.text))
}
-
- Keys.onPressed: {
- if (((event.modifiers & Qt.ControlModifier) && event.key == Qt.Key_L) || event.key == Qt.key_F6) {
- focusAddressBar()
- event.accepted = true
- }
- }
}
}
}
@@ -279,11 +301,4 @@ Rectangle {
visible: false
viewportInfo : webView.experimental.viewportInfo
}
-
- Keys.onPressed: {
- if (((event.modifiers & Qt.ControlModifier) && event.key == Qt.Key_L) || event.key == Qt.key_F6) {
- focusAddressBar()
- event.accepted = true
- }
- }
}
diff --git a/Tools/MiniBrowser/win/BrowserView.cpp b/Tools/MiniBrowser/win/BrowserView.cpp
index fdf076e9c..bd5dcba65 100644
--- a/Tools/MiniBrowser/win/BrowserView.cpp
+++ b/Tools/MiniBrowser/win/BrowserView.cpp
@@ -152,8 +152,10 @@ void BrowserView::setFrame(RECT rect)
void BrowserView::goToURL(const std::wstring& urlString)
{
CFStringRef string = CFStringCreateWithCharacters(0, (const UniChar*)urlString.data(), urlString.size());
- CFURLRef cfURL = CFURLCreateWithString(0, string, 0);
+ CFStringRef escapedString = CFURLCreateStringByAddingPercentEscapes(0, string, 0, 0, kCFStringEncodingUTF8);
CFRelease(string);
+ CFURLRef cfURL = CFURLCreateWithString(0, escapedString, 0);
+ CFRelease(escapedString);
WKURLRef url = WKURLCreateWithCFURL(cfURL);
CFRelease(cfURL);
diff --git a/Tools/MiniBrowser/win/BrowserWindow.cpp b/Tools/MiniBrowser/win/BrowserWindow.cpp
index dc43a684e..b791d5bb5 100644
--- a/Tools/MiniBrowser/win/BrowserWindow.cpp
+++ b/Tools/MiniBrowser/win/BrowserWindow.cpp
@@ -251,7 +251,7 @@ bool BrowserWindow::handleMessage(const MSG* message)
std::wstring url(&buffer[0], buffer.size() - 1);
- if (url.find(L"http://"))
+ if (url.find(L":") == std::wstring::npos)
url = L"http://" + url;
m_browserView.goToURL(url);