summaryrefslogtreecommitdiffstats
path: root/Tools/MiniBrowser
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-06-02 12:07:03 +0100
committerBen Murdoch <benm@google.com>2011-06-10 10:47:21 +0100
commit2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 (patch)
treee4964fbd1cb70599f7718ff03e50ea1dab33890b /Tools/MiniBrowser
parent87bdf0060a247bfbe668342b87e0874182e0ffa9 (diff)
downloadexternal_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.zip
external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.gz
external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.bz2
Merge WebKit at r84325: Initial merge by git.
Change-Id: Ic1a909300ecc0a13ddc6b4e784371d2ac6e3d59b
Diffstat (limited to 'Tools/MiniBrowser')
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops2
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops1
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops1
-rw-r--r--Tools/MiniBrowser/DerivedSources.pro33
-rw-r--r--Tools/MiniBrowser/gtk/GNUmakefile.am33
-rw-r--r--Tools/MiniBrowser/gtk/main.c138
-rw-r--r--Tools/MiniBrowser/mac/BrowserWindowController.m3
-rw-r--r--Tools/MiniBrowser/qt/BrowserWindow.cpp31
-rw-r--r--Tools/MiniBrowser/qt/BrowserWindow.h5
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowser.pro6
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowser.qrc (renamed from Tools/MiniBrowser/MiniBrowser.qrc)0
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowserApplication.cpp4
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowserApplication.h6
-rw-r--r--Tools/MiniBrowser/qt/UrlLoader.cpp2
-rw-r--r--Tools/MiniBrowser/qt/main.cpp6
-rw-r--r--Tools/MiniBrowser/qt/useragentlist.txt11
-rw-r--r--Tools/MiniBrowser/win/BrowserView.cpp3
-rw-r--r--Tools/MiniBrowser/win/main.cpp20
18 files changed, 257 insertions, 48 deletions
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops
index 75195e3..4c5e11b 100644
--- a/Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops
+++ b/Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops
@@ -5,7 +5,7 @@
Name="MiniBrowserProduction"
InheritedPropertySheets="
$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;
- $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;
+ $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;
$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\production.vsprops;
.\MiniBrowserCoreFoundation.vsprops;
.\MiniBrowserCommon.vsprops"
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops
index 27af48a..653d847 100644
--- a/Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops
+++ b/Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops
@@ -5,6 +5,7 @@
Name="MiniBrowserRelease"
InheritedPropertySheets="
$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;
+ $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;
$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;
.\MiniBrowserCoreFoundation.vsprops;
.\MiniBrowserCommon.vsprops"
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops
index a50d5b7..bf485fc 100644
--- a/Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops
+++ b/Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops
@@ -5,6 +5,7 @@
Name="MiniBrowserReleaseCairoCFLite"
InheritedPropertySheets="
$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;
+ $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;
$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;
$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\WinCairo.vsprops;
.\MiniBrowserCFLite.vsprops;
diff --git a/Tools/MiniBrowser/DerivedSources.pro b/Tools/MiniBrowser/DerivedSources.pro
deleted file mode 100644
index 8674beb..0000000
--- a/Tools/MiniBrowser/DerivedSources.pro
+++ /dev/null
@@ -1,33 +0,0 @@
-# DerivedSources - qmake build info
-
-CONFIG -= debug_and_release
-
-TEMPLATE = lib
-TARGET = dummy
-
-QMAKE_EXTRA_TARGETS += generated_files
-
-isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../..
-SRC_ROOT_DIR = $$replace(PWD, "/Tools/MiniBrowser", "")
-
-!exists($$OUTPUT_DIR/MiniBrowser/qt): system($$QMAKE_MKDIR $$OUTPUT_DIR/MiniBrowser/qt)
-
-ualist_copier.input = $$SRC_ROOT_DIR/Tools/QtTestBrowser/useragentlist.txt
-ualist_copier.output = $$OUTPUT_DIR/MiniBrowser/qt/useragentlist.txt
-ualist_copier.tempNames = $$ualist_copier.input $$ualist_copier.output
-ualist_copier.commands = $$QMAKE_COPY $$replace(ualist_copier.tempNames, "/", $$QMAKE_DIR_SEP)
-ualist_copier.depends = $$ualist_copier.input
-generated_files.depends += ualist_copier
-QMAKE_EXTRA_TARGETS += ualist_copier
-
-# We have to copy the resource file to the build directory
-# to use the useragentlist.txt file of QtTestBrowser without
-# polluting the source tree.
-
-qrc_copier.input = $$SRC_ROOT_DIR/Tools/MiniBrowser/MiniBrowser.qrc
-qrc_copier.output = $$OUTPUT_DIR/MiniBrowser/qt/MiniBrowser.qrc
-qrc_copier.tempNames = $$qrc_copier.input $$qrc_copier.output
-qrc_copier.commands = $$QMAKE_COPY $$replace(qrc_copier.tempNames, "/", $$QMAKE_DIR_SEP)
-qrc_copier.depends = ualist_copier $$qrc_copier.input
-generated_files.depends += qrc_copier
-QMAKE_EXTRA_TARGETS += qrc_copier
diff --git a/Tools/MiniBrowser/gtk/GNUmakefile.am b/Tools/MiniBrowser/gtk/GNUmakefile.am
new file mode 100644
index 0000000..24da0ad
--- /dev/null
+++ b/Tools/MiniBrowser/gtk/GNUmakefile.am
@@ -0,0 +1,33 @@
+bin_PROGRAMS += \
+ Programs/MiniBrowser
+
+Programs_MiniBrowser_CPPFLAGS = \
+ -I$(srcdir)/Source \
+ -I$(top_builddir)/DerivedSources/WebKit2/include \
+ $(global_cppflags) \
+ $(GLIB_CFLAGS) \
+ $(GTK_CFLAGS)
+
+Programs_MiniBrowser_SOURCES = \
+ Tools/MiniBrowser/gtk/main.c
+
+BUILT_SOURCES += \
+ generate-minibrowser-forward-headers
+
+MiniBrowser := $(srcdir)/Tools/MiniBrowser/gtk
+MiniBrowserFwdHeaders := $(GENSOURCES_WEBKIT2)/include
+generate-minibrowser-forward-headers: $(WebKit2)/Scripts/generate-forwarding-headers.pl $(Programs_MiniBrowser_SOURCES)
+ $(AM_V_GEN)$(PERL) $< $(MiniBrowser) $(MiniBrowserFwdHeaders) gtk
+ $(AM_V_GEN)$(PERL) $< $(MiniBrowser) $(MiniBrowserFwdHeaders) soup
+
+Programs_MiniBrowser_LDADD = \
+ libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
+ $(GLIB_LIBS) \
+ $(GTK_LIBS)
+
+Programs_MiniBrowser_LDFLAGS = \
+ -no-fast-install \
+ -no-install
+
+CLEANFILES += \
+ $(top_builddir)/Programs/MiniBrowser
diff --git a/Tools/MiniBrowser/gtk/main.c b/Tools/MiniBrowser/gtk/main.c
new file mode 100644
index 0000000..0c32510
--- /dev/null
+++ b/Tools/MiniBrowser/gtk/main.c
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2006, 2007 Apple Inc.
+ * Copyright (C) 2007 Alp Toker <alp@atoker.com>
+ * Copyright (C) 2011 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <WebKit2/WebKit2.h>
+#include <gtk/gtk.h>
+
+static void activateUriEntryCallback(GtkWidget *entry, gpointer data)
+{
+ WKViewRef webView = g_object_get_data(G_OBJECT(entry), "web-view");
+ const gchar *uri = gtk_entry_get_text(GTK_ENTRY(entry));
+ WKPageLoadURL(WKViewGetPage(webView), WKURLCreateWithURL(uri));
+}
+
+static void destroyCallback(GtkWidget *widget, GtkWidget *window)
+{
+ gtk_main_quit();
+}
+
+static void goBackCallback(GtkWidget *widget, WKViewRef webView)
+{
+ WKPageGoBack(WKViewGetPage(webView));
+}
+
+static void goForwardCallback(GtkWidget *widget, WKViewRef webView)
+{
+ WKPageGoForward(WKViewGetPage(webView));
+}
+
+static GtkWidget *createToolbar(GtkWidget *uriEntry, WKViewRef webView)
+{
+ GtkWidget *toolbar = gtk_toolbar_new();
+
+#if GTK_CHECK_VERSION(2, 15, 0)
+ gtk_orientable_set_orientation(GTK_ORIENTABLE(toolbar), GTK_ORIENTATION_HORIZONTAL);
+#else
+ gtk_toolbar_set_orientation(GTK_TOOLBAR(toolbar), GTK_ORIENTATION_HORIZONTAL);
+#endif
+ gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ);
+
+ GtkToolItem *item = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
+ g_signal_connect(item, "clicked", G_CALLBACK(goBackCallback), (gpointer)webView);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
+
+ item = gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
+ g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(goForwardCallback), (gpointer)webView);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
+
+ item = gtk_tool_item_new();
+ gtk_tool_item_set_expand(item, TRUE);
+ gtk_container_add(GTK_CONTAINER(item), uriEntry);
+ g_signal_connect(uriEntry, "activate", G_CALLBACK(activateUriEntryCallback), NULL);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
+
+ g_object_set_data(G_OBJECT(uriEntry), "web-view", (gpointer)webView);
+ item = gtk_tool_button_new_from_stock(GTK_STOCK_OK);
+ g_signal_connect_swapped(item, "clicked", G_CALLBACK(activateUriEntryCallback), (gpointer)uriEntry);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
+
+ return toolbar;
+}
+
+static WKViewRef createWebView()
+{
+ return WKViewCreate(WKContextGetSharedProcessContext(), 0);
+}
+
+static GtkWidget *createWindow(WKViewRef webView)
+{
+ GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
+ gtk_widget_set_name(window, "MiniBrowser");
+
+ GtkWidget *uriEntry = gtk_entry_new();
+
+ GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), createToolbar(uriEntry, webView), FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), WKViewGetWindow(webView), TRUE, TRUE, 0);
+
+ gtk_container_add(GTK_CONTAINER(window), vbox);
+
+ g_signal_connect(window, "destroy", G_CALLBACK(destroyCallback), NULL);
+
+ return window;
+}
+
+static gchar *argumentToURL(const char *filename)
+{
+ GFile *gfile = g_file_new_for_commandline_arg(filename);
+ gchar *fileURL = g_file_get_uri(gfile);
+ g_object_unref(gfile);
+
+ return fileURL;
+}
+
+int main(int argc, char *argv[])
+{
+ gtk_init(&argc, &argv);
+
+ if (!g_thread_supported())
+ g_thread_init(NULL);
+
+ WKViewRef webView = createWebView();
+ GtkWidget *mainWindow = createWindow(webView);
+
+ gchar* url = argumentToURL(argc > 1 ? argv[1] : "http://www.webkitgtk.org/");
+ WKPageLoadURL(WKViewGetPage(webView), WKURLCreateWithURL(url));
+ g_free(url);
+
+ gtk_widget_grab_focus(WKViewGetWindow(webView));
+ gtk_widget_show_all(mainWindow);
+ gtk_main();
+
+ return 0;
+}
diff --git a/Tools/MiniBrowser/mac/BrowserWindowController.m b/Tools/MiniBrowser/mac/BrowserWindowController.m
index 1f6fc04..f6b4d1d 100644
--- a/Tools/MiniBrowser/mac/BrowserWindowController.m
+++ b/Tools/MiniBrowser/mac/BrowserWindowController.m
@@ -618,6 +618,9 @@ static void runOpenPanel(WKPageRef page, WKFrameRef frame, WKOpenPanelParameters
createNewPage,
showPage,
closePage,
+ 0, /* takeFocus */
+ 0, /* focus */
+ 0, /* unfocus */
runJavaScriptAlert,
runJavaScriptConfirm,
runJavaScriptPrompt,
diff --git a/Tools/MiniBrowser/qt/BrowserWindow.cpp b/Tools/MiniBrowser/qt/BrowserWindow.cpp
index 53f7de9..a8a2226 100644
--- a/Tools/MiniBrowser/qt/BrowserWindow.cpp
+++ b/Tools/MiniBrowser/qt/BrowserWindow.cpp
@@ -28,6 +28,7 @@
#include "BrowserWindow.h"
+#include "UrlLoader.h"
#include "qwkpreferences.h"
static QWKPage* newPageFunction(QWKPage* page)
@@ -41,6 +42,7 @@ QVector<qreal> BrowserWindow::m_zoomLevels;
BrowserWindow::BrowserWindow(QWKContext* context, WindowOptions* options)
: m_isZoomTextOnly(false)
, m_currentZoom(1)
+ , m_urlLoader(0)
, m_context(context)
{
if (options)
@@ -106,6 +108,8 @@ BrowserWindow::BrowserWindow(QWKContext* context, WindowOptions* options)
toggleFrameFlattening->setChecked(false);
toolsMenu->addSeparator();
toolsMenu->addAction("Change User Agent", this, SLOT(showUserAgentDialog()));
+ toolsMenu->addSeparator();
+ toolsMenu->addAction("Load URLs from file", this, SLOT(loadURLListFromFile()));
QMenu* settingsMenu = menuBar()->addMenu("&Settings");
QAction* toggleAutoLoadImages = settingsMenu->addAction("Disable Auto Load Images", this, SLOT(toggleAutoLoadImages(bool)));
@@ -137,7 +141,10 @@ BrowserWindow::BrowserWindow(QWKContext* context, WindowOptions* options)
m_zoomLevels << 1.1 << 1.2 << 1.33 << 1.5 << 1.7 << 2 << 2.4 << 3;
}
- resize(800, 600);
+ if (m_windowOptions.startMaximized)
+ setWindowState(windowState() | Qt::WindowMaximized);
+ else
+ resize(800, 600);
show();
}
@@ -294,10 +301,9 @@ void BrowserWindow::toggleZoomTextOnly(bool b)
void BrowserWindow::toggleFullScreenMode(bool enable)
{
- if (enable)
- setWindowState(Qt::WindowFullScreen);
- else
- setWindowState(Qt::WindowNoState);
+ bool alreadyEnabled = windowState() & Qt::WindowFullScreen;
+ if (enable ^ alreadyEnabled)
+ setWindowState(windowState() ^ Qt::WindowFullScreen);
}
void BrowserWindow::toggleFrameFlattening(bool toggle)
@@ -335,6 +341,20 @@ void BrowserWindow::showUserAgentDialog()
page()->setCustomUserAgent(combo->currentText());
}
+void BrowserWindow::loadURLListFromFile()
+{
+ QString selectedFile;
+#ifndef QT_NO_FILEDIALOG
+ selectedFile = QFileDialog::getOpenFileName(this, tr("Load URL list from file")
+ , QString(), tr("Text Files (*.txt);;All Files (*)"));
+#endif
+ if (selectedFile.isEmpty())
+ return;
+
+ m_urlLoader = new UrlLoader(this, selectedFile, 0, 0);
+ m_urlLoader->loadNext();
+}
+
void BrowserWindow::printURL(const QUrl& url)
{
QTextStream output(stdout);
@@ -380,6 +400,7 @@ void BrowserWindow::applyZoom()
BrowserWindow::~BrowserWindow()
{
+ delete m_urlLoader;
delete m_addressBar;
delete m_browser;
}
diff --git a/Tools/MiniBrowser/qt/BrowserWindow.h b/Tools/MiniBrowser/qt/BrowserWindow.h
index 6ad8f27..06da2a2 100644
--- a/Tools/MiniBrowser/qt/BrowserWindow.h
+++ b/Tools/MiniBrowser/qt/BrowserWindow.h
@@ -35,6 +35,8 @@
#include <QStringList>
#include <QtGui>
+class UrlLoader;
+
class BrowserWindow : public QMainWindow {
Q_OBJECT
@@ -69,6 +71,8 @@ protected slots:
void toggleFrameFlattening(bool);
void showUserAgentDialog();
+ void loadURLListFromFile();
+
void printURL(const QUrl&);
void toggleAutoLoadImages(bool);
@@ -83,6 +87,7 @@ private:
bool m_isZoomTextOnly;
qreal m_currentZoom;
+ UrlLoader* m_urlLoader;
QWKContext* m_context;
WindowOptions m_windowOptions;
BrowserView* m_browser;
diff --git a/Tools/MiniBrowser/qt/MiniBrowser.pro b/Tools/MiniBrowser/qt/MiniBrowser.pro
index 809c934..7836e53 100644
--- a/Tools/MiniBrowser/qt/MiniBrowser.pro
+++ b/Tools/MiniBrowser/qt/MiniBrowser.pro
@@ -58,7 +58,5 @@ contains(QT_CONFIG, opengl) {
DEFINES -= QT_ASCII_CAST_WARNINGS
-# We copy the resource file to the build directory.
-# The copier is defined in Tools/MiniBrowser/DerivedSources.pro.
-RESOURCES += \
- $$OUTPUT_DIR/MiniBrowser/qt/MiniBrowser.qrc
+# Use the MiniBrowser.qrc file from the sources.
+RESOURCES += MiniBrowser.qrc
diff --git a/Tools/MiniBrowser/MiniBrowser.qrc b/Tools/MiniBrowser/qt/MiniBrowser.qrc
index ffe77b0..ffe77b0 100644
--- a/Tools/MiniBrowser/MiniBrowser.qrc
+++ b/Tools/MiniBrowser/qt/MiniBrowser.qrc
diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp
index f40c870..912419b 100644
--- a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp
+++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp
@@ -55,6 +55,7 @@ void MiniBrowserApplication::handleUserOptions()
if (args.contains("-help")) {
qDebug() << "Usage:" << programName.toLatin1().data()
+ << "[-maximize]"
<< "[-r list]"
<< "[-robot-timeout seconds]"
<< "[-robot-extra-time seconds]"
@@ -65,6 +66,9 @@ void MiniBrowserApplication::handleUserOptions()
appQuit(0);
}
+ if (args.contains("-maximize"))
+ m_windowOptions.startMaximized = true;
+
int robotIndex = args.indexOf("-r");
if (robotIndex != -1) {
QString listFile = takeOptionValue(&args, robotIndex);
diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.h b/Tools/MiniBrowser/qt/MiniBrowserApplication.h
index 5a78820..2eba9b5 100644
--- a/Tools/MiniBrowser/qt/MiniBrowserApplication.h
+++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.h
@@ -37,12 +37,18 @@ struct WindowOptions {
: useTiledBackingStore(true)
, useSeparateWebProcessPerWindow(false)
, printLoadedUrls(false)
+#if defined(Q_OS_SYMBIAN)
+ , startMaximized(true)
+#else
+ , startMaximized(false)
+#endif
{
}
bool useTiledBackingStore;
bool useSeparateWebProcessPerWindow;
bool printLoadedUrls;
+ bool startMaximized;
};
class MiniBrowserApplication : public QApplication {
diff --git a/Tools/MiniBrowser/qt/UrlLoader.cpp b/Tools/MiniBrowser/qt/UrlLoader.cpp
index 600d477..54854c8 100644
--- a/Tools/MiniBrowser/qt/UrlLoader.cpp
+++ b/Tools/MiniBrowser/qt/UrlLoader.cpp
@@ -47,7 +47,7 @@ UrlLoader::UrlLoader(BrowserWindow* browserWindow, const QString& inputFileName,
if (timeoutSeconds) {
m_timeoutTimer.setInterval(timeoutSeconds * 1000);
m_timeoutTimer.setSingleShot(true);
- connect(m_browserWindow, SIGNAL(loadStarted()), &m_timeoutTimer, SLOT(start()));
+ connect(m_browserWindow->page(), SIGNAL(loadStarted()), &m_timeoutTimer, SLOT(start()));
connect(&m_timeoutTimer, SIGNAL(timeout()), this, SLOT(loadNext()));
}
if (extraTimeSeconds) {
diff --git a/Tools/MiniBrowser/qt/main.cpp b/Tools/MiniBrowser/qt/main.cpp
index 8f4c1ea..8b38912 100644
--- a/Tools/MiniBrowser/qt/main.cpp
+++ b/Tools/MiniBrowser/qt/main.cpp
@@ -51,9 +51,9 @@ int main(int argc, char** argv)
QStringList urls = app.urls();
if (urls.isEmpty()) {
- QString defaultUrl = QString("file://%1/%2").arg(QDir::homePath()).arg(QLatin1String("index.html"));
- if (QDir(defaultUrl).exists())
- urls.append(defaultUrl);
+ QString defaultIndexFile = QString("%1/%2").arg(QDir::homePath()).arg(QLatin1String("index.html"));
+ if (QFile(defaultIndexFile).exists())
+ urls.append(QString("file://") + defaultIndexFile);
else
urls.append("http://www.google.com");
}
diff --git a/Tools/MiniBrowser/qt/useragentlist.txt b/Tools/MiniBrowser/qt/useragentlist.txt
new file mode 100644
index 0000000..0b29d40
--- /dev/null
+++ b/Tools/MiniBrowser/qt/useragentlist.txt
@@ -0,0 +1,11 @@
+Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/533.3 (KHTML, like Gecko) QtTestBrowser/0.1 Safari/533.3
+Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0; en-GB) AppleWebKit/533.3 (KHTML, like Gecko) QtTestBrowser/0.1 Mobile Safari/533.3
+Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8
+Mozilla/5.0 (Linux; U; Android 1.1; en-gb; dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2
+Mozilla/5.0 (Unknown; like Android 2.2; U; Intel Mac OS X 10_6; en-gb) AppleWebKit/533.3 (KHTML, like Gecko) Version/4.0.3 Mobile Safari/533.3
+Mozilla/5.0 (iPhone; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10
+Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
+Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10
+Opera/9.25 (Windows NT 6.0; U; en)
+Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1b/20.2.014; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
+Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
diff --git a/Tools/MiniBrowser/win/BrowserView.cpp b/Tools/MiniBrowser/win/BrowserView.cpp
index f9ccfe7..76b8d04 100644
--- a/Tools/MiniBrowser/win/BrowserView.cpp
+++ b/Tools/MiniBrowser/win/BrowserView.cpp
@@ -98,6 +98,9 @@ void BrowserView::create(RECT webViewRect, BrowserWindow* parentWindow)
createNewPage,
showPage,
closePage,
+ 0, /* takeFocus */
+ 0, /* focus */
+ 0, /* unfocus */
runJavaScriptAlert,
runJavaScriptConfirm,
runJavaScriptPrompt,
diff --git a/Tools/MiniBrowser/win/main.cpp b/Tools/MiniBrowser/win/main.cpp
index 0c125ba..93b47ce 100644
--- a/Tools/MiniBrowser/win/main.cpp
+++ b/Tools/MiniBrowser/win/main.cpp
@@ -41,6 +41,22 @@
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='" PROCESSORARCHITECTURE "' publicKeyToken='6595b64144ccf1df' language='*'\"")
+static bool shouldTranslateMessage(const MSG& msg)
+{
+ // Only these four messages are actually translated by ::TranslateMessage or ::TranslateAccelerator.
+ // It's useless (though harmless) to call those functions for other messages, so we always allow other messages to be translated.
+ if (msg.message != WM_KEYDOWN && msg.message != WM_SYSKEYDOWN && msg.message != WM_KEYUP && msg.message != WM_SYSKEYUP)
+ return true;
+
+ wchar_t className[256];
+ if (!::GetClassNameW(msg.hwnd, className, ARRAYSIZE(className)))
+ return true;
+
+ // Don't call TranslateMessage() on key events destined for a WebKit2 view, WebKit will do this if it doesn't handle the message.
+ // It would be nice to use some API here instead of hard-coding the window class name.
+ return wcscmp(className, L"WebKit2WebViewWindowClass");
+}
+
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrCmdLine, int nCmdShow)
{
MiniBrowser::shared().initialize(hInstance);
@@ -52,7 +68,9 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC
while (BOOL result = ::GetMessage(&message, 0, 0, 0)) {
if (result == -1)
break;
- ::TranslateMessage(&message);
+
+ if (shouldTranslateMessage(message))
+ ::TranslateMessage(&message);
if (!MiniBrowser::shared().handleMessage(&message))
::DispatchMessage(&message);