otherinbox-capybara-webkit 0.12.0 → 0.12.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. data/GOALS +9 -0
  2. data/README.md +1 -1
  3. data/capybara-webkit.gemspec +1 -1
  4. data/lib/capybara/webkit.rb +11 -4
  5. data/lib/capybara/{driver/webkit → webkit}/browser.rb +27 -3
  6. data/lib/capybara/{driver/webkit → webkit}/connection.rb +45 -47
  7. data/lib/capybara/{driver/webkit → webkit}/cookie_jar.rb +1 -1
  8. data/lib/capybara/webkit/driver.rb +150 -0
  9. data/lib/capybara/webkit/errors.rb +10 -0
  10. data/lib/capybara/{driver/webkit → webkit}/node.rb +2 -2
  11. data/lib/capybara/{driver/webkit → webkit}/socket_debugger.rb +1 -1
  12. data/lib/capybara/{driver/webkit → webkit}/version.rb +1 -1
  13. data/lib/capybara_webkit_builder.rb +17 -3
  14. data/spec/browser_spec.rb +38 -25
  15. data/spec/connection_spec.rb +5 -5
  16. data/spec/cookie_jar_spec.rb +3 -3
  17. data/spec/driver_rendering_spec.rb +19 -26
  18. data/spec/driver_resize_window_spec.rb +3 -3
  19. data/spec/driver_spec.rb +907 -829
  20. data/spec/integration/driver_spec.rb +4 -3
  21. data/spec/spec_helper.rb +14 -6
  22. data/spec/support/app_runner.rb +91 -0
  23. data/src/Authenticate.cpp +18 -0
  24. data/src/Authenticate.h +12 -0
  25. data/src/Body.h +3 -5
  26. data/src/ClearCookies.cpp +3 -5
  27. data/src/ClearCookies.h +3 -5
  28. data/src/Command.cpp +4 -15
  29. data/src/Command.h +3 -14
  30. data/src/CommandFactory.cpp +10 -6
  31. data/src/CommandFactory.h +3 -2
  32. data/src/CommandParser.cpp +1 -1
  33. data/src/Connection.cpp +22 -11
  34. data/src/Connection.h +4 -2
  35. data/src/ConsoleMessages.cpp +2 -1
  36. data/src/ConsoleMessages.h +3 -5
  37. data/src/CurrentUrl.cpp +2 -1
  38. data/src/CurrentUrl.h +3 -5
  39. data/src/EnableLogging.cpp +10 -0
  40. data/src/EnableLogging.h +12 -0
  41. data/src/Evaluate.cpp +2 -1
  42. data/src/Evaluate.h +3 -5
  43. data/src/Execute.cpp +2 -1
  44. data/src/Execute.h +3 -5
  45. data/src/Find.cpp +3 -2
  46. data/src/Find.h +3 -5
  47. data/src/FrameFocus.cpp +3 -2
  48. data/src/FrameFocus.h +3 -4
  49. data/src/GetCookies.cpp +3 -4
  50. data/src/GetCookies.h +3 -5
  51. data/src/GetWindowHandle.cpp +11 -0
  52. data/src/GetWindowHandle.h +10 -0
  53. data/src/GetWindowHandles.cpp +20 -0
  54. data/src/GetWindowHandles.h +10 -0
  55. data/src/Header.cpp +2 -1
  56. data/src/Header.h +3 -5
  57. data/src/Headers.cpp +2 -1
  58. data/src/Headers.h +3 -5
  59. data/src/IgnoreSslErrors.cpp +4 -3
  60. data/src/IgnoreSslErrors.h +3 -5
  61. data/src/JavascriptInvocation.cpp +1 -1
  62. data/src/JavascriptInvocation.h +1 -1
  63. data/src/NetworkAccessManager.cpp +19 -1
  64. data/src/NetworkAccessManager.h +10 -0
  65. data/src/Node.cpp +6 -1
  66. data/src/Node.h +4 -5
  67. data/src/NullCommand.cpp +5 -2
  68. data/src/NullCommand.h +4 -3
  69. data/src/PageLoadingCommand.cpp +12 -7
  70. data/src/PageLoadingCommand.h +6 -9
  71. data/src/Render.cpp +2 -1
  72. data/src/Render.h +3 -5
  73. data/src/RequestedUrl.cpp +2 -1
  74. data/src/RequestedUrl.h +3 -5
  75. data/src/Reset.cpp +3 -17
  76. data/src/Reset.h +3 -8
  77. data/src/ResizeWindow.cpp +2 -1
  78. data/src/ResizeWindow.h +3 -5
  79. data/src/Server.cpp +2 -3
  80. data/src/Server.h +0 -2
  81. data/src/SetCookie.cpp +3 -4
  82. data/src/SetCookie.h +3 -5
  83. data/src/SetProxy.cpp +2 -1
  84. data/src/SetProxy.h +3 -5
  85. data/src/SetSkipImageLoading.cpp +3 -2
  86. data/src/SetSkipImageLoading.h +3 -5
  87. data/src/SocketCommand.cpp +21 -0
  88. data/src/SocketCommand.h +29 -0
  89. data/src/Source.cpp +2 -1
  90. data/src/Source.h +3 -4
  91. data/src/Status.cpp +2 -1
  92. data/src/Status.h +3 -5
  93. data/src/UnsupportedContentHandler.cpp +1 -1
  94. data/src/Url.cpp +2 -1
  95. data/src/Url.h +3 -5
  96. data/src/Visit.cpp +3 -2
  97. data/src/Visit.h +3 -5
  98. data/src/WebPage.cpp +86 -39
  99. data/src/WebPage.h +22 -8
  100. data/src/WebPageManager.cpp +117 -0
  101. data/src/WebPageManager.h +56 -0
  102. data/src/WindowFocus.cpp +32 -0
  103. data/src/WindowFocus.h +15 -0
  104. data/src/body.cpp +2 -1
  105. data/src/find_command.h +6 -2
  106. data/src/webkit_server.pro +14 -0
  107. data/templates/Command.cpp +2 -4
  108. data/templates/Command.h +3 -3
  109. metadata +29 -10
  110. data/lib/capybara/driver/webkit.rb +0 -135
@@ -0,0 +1,21 @@
1
+ #include "SocketCommand.h"
2
+ #include "WebPage.h"
3
+ #include "WebPageManager.h"
4
+
5
+ SocketCommand::SocketCommand(WebPageManager *manager, QStringList &arguments, QObject *parent) : Command(parent) {
6
+ m_manager = manager;
7
+ m_arguments = arguments;
8
+ }
9
+
10
+ WebPage *SocketCommand::page() const {
11
+ return m_manager->currentPage();
12
+ }
13
+
14
+ const QStringList &SocketCommand::arguments() const {
15
+ return m_arguments;
16
+ }
17
+
18
+ WebPageManager *SocketCommand::manager() const {
19
+ return m_manager;
20
+ }
21
+
@@ -0,0 +1,29 @@
1
+ #ifndef SOCKET_COMMAND_H
2
+ #define SOCKET_COMMAND_H
3
+
4
+ #include <QObject>
5
+ #include <QStringList>
6
+ #include "Command.h"
7
+
8
+ class WebPage;
9
+ class WebPageManager;
10
+ class Response;
11
+
12
+ class SocketCommand : public Command {
13
+ Q_OBJECT
14
+
15
+ public:
16
+ SocketCommand(WebPageManager *, QStringList &arguments, QObject *parent = 0);
17
+
18
+ protected:
19
+ WebPage *page() const;
20
+ const QStringList &arguments() const;
21
+ WebPageManager *manager() const;
22
+
23
+ private:
24
+ QStringList m_arguments;
25
+ WebPageManager *m_manager;
26
+
27
+ };
28
+
29
+ #endif
data/src/Source.cpp CHANGED
@@ -1,7 +1,8 @@
1
1
  #include "Source.h"
2
2
  #include "WebPage.h"
3
+ #include "WebPageManager.h"
3
4
 
4
- Source::Source(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
5
+ Source::Source(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
5
6
  }
6
7
 
7
8
  void Source::start() {
data/src/Source.h CHANGED
@@ -1,13 +1,12 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
3
  class QNetworkReply;
5
4
 
6
- class Source : public Command {
5
+ class Source : public SocketCommand {
7
6
  Q_OBJECT
8
7
 
9
8
  public:
10
- Source(WebPage *page, QStringList &arguments, QObject *parent = 0);
9
+ Source(WebPageManager *, QStringList &arguments, QObject *parent = 0);
11
10
  virtual void start();
12
11
 
13
12
  public slots:
data/src/Status.cpp CHANGED
@@ -1,8 +1,9 @@
1
1
  #include "Status.h"
2
2
  #include "WebPage.h"
3
+ #include "WebPageManager.h"
3
4
  #include <sstream>
4
5
 
5
- Status::Status(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
6
+ Status::Status(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
6
7
  }
7
8
 
8
9
  void Status::start() {
data/src/Status.h CHANGED
@@ -1,12 +1,10 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
-
5
- class Status : public Command {
3
+ class Status : public SocketCommand {
6
4
  Q_OBJECT
7
5
 
8
6
  public:
9
- Status(WebPage *page, QStringList &arguments, QObject *parent = 0);
7
+ Status(WebPageManager *, QStringList &arguments, QObject *parent = 0);
10
8
  virtual void start();
11
9
  };
12
10
 
@@ -27,6 +27,6 @@ void UnsupportedContentHandler::loadUnsupportedContent() {
27
27
 
28
28
  void UnsupportedContentHandler::finish(bool success) {
29
29
  connect(m_page, SIGNAL(loadFinished(bool)), m_page, SLOT(loadFinished(bool)));
30
- m_page->replyFinished(m_reply);
30
+ m_page->networkAccessManagerFinishedReply(m_reply);
31
31
  m_page->loadFinished(success);
32
32
  }
data/src/Url.cpp CHANGED
@@ -1,7 +1,8 @@
1
1
  #include "Url.h"
2
2
  #include "WebPage.h"
3
+ #include "WebPageManager.h"
3
4
 
4
- Url::Url(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
5
+ Url::Url(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
5
6
  }
6
7
 
7
8
  void Url::start() {
data/src/Url.h CHANGED
@@ -1,12 +1,10 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
-
5
- class Url : public Command {
3
+ class Url : public SocketCommand {
6
4
  Q_OBJECT
7
5
 
8
6
  public:
9
- Url(WebPage *page, QStringList &arguments, QObject *parent = 0);
7
+ Url(WebPageManager *, QStringList &arguments, QObject *parent = 0);
10
8
  virtual void start();
11
9
  };
12
10
 
data/src/Visit.cpp CHANGED
@@ -1,8 +1,9 @@
1
1
  #include "Visit.h"
2
- #include "Command.h"
2
+ #include "SocketCommand.h"
3
3
  #include "WebPage.h"
4
+ #include "WebPageManager.h"
4
5
 
5
- Visit::Visit(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
6
+ Visit::Visit(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
6
7
  }
7
8
 
8
9
  void Visit::start() {
data/src/Visit.h CHANGED
@@ -1,12 +1,10 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
-
5
- class Visit : public Command {
3
+ class Visit : public SocketCommand {
6
4
  Q_OBJECT
7
5
 
8
6
  public:
9
- Visit(WebPage *page, QStringList &arguments, QObject *parent = 0);
7
+ Visit(WebPageManager *manager, QStringList &arguments, QObject *parent = 0);
10
8
  virtual void start();
11
9
  };
12
10
 
data/src/WebPage.cpp CHANGED
@@ -1,4 +1,5 @@
1
1
  #include "WebPage.h"
2
+ #include "WebPageManager.h"
2
3
  #include "JavascriptInvocation.h"
3
4
  #include "NetworkAccessManager.h"
4
5
  #include "NetworkCookieJar.h"
@@ -6,14 +7,18 @@
6
7
  #include <QResource>
7
8
  #include <iostream>
8
9
  #include <QWebSettings>
10
+ #include <QUuid>
11
+
12
+ WebPage::WebPage(WebPageManager *manager, QObject *parent) : QWebPage(parent) {
13
+ m_loading = false;
14
+ m_manager = manager;
15
+ m_uuid = QUuid::createUuid().toString();
16
+ m_lastStatus = 0;
9
17
 
10
- WebPage::WebPage(QObject *parent) : QWebPage(parent) {
11
18
  setForwardUnsupportedContent(true);
12
19
  loadJavascript();
13
20
  setUserStylesheet();
14
21
 
15
- m_loading = false;
16
- m_ignoreSslErrors = false;
17
22
  this->setCustomNetworkAccessManager();
18
23
 
19
24
  this->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
@@ -25,6 +30,8 @@ WebPage::WebPage(QObject *parent) : QWebPage(parent) {
25
30
  connect(this, SIGNAL(unsupportedContent(QNetworkReply*)),
26
31
  this, SLOT(handleUnsupportedContent(QNetworkReply*)));
27
32
  resetWindowSize();
33
+
34
+ settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
28
35
  }
29
36
 
30
37
  void WebPage::resetWindowSize() {
@@ -33,12 +40,33 @@ void WebPage::resetWindowSize() {
33
40
  }
34
41
 
35
42
  void WebPage::setCustomNetworkAccessManager() {
36
- NetworkAccessManager *manager = new NetworkAccessManager();
37
- manager->setCookieJar(new NetworkCookieJar());
43
+ NetworkAccessManager *manager = new NetworkAccessManager(this);
44
+ manager->setCookieJar(m_manager->cookieJar());
38
45
  this->setNetworkAccessManager(manager);
39
- connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
46
+ connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(networkAccessManagerFinishedReply(QNetworkReply *)));
40
47
  connect(manager, SIGNAL(sslErrors(QNetworkReply *, QList<QSslError>)),
41
48
  this, SLOT(handleSslErrorsForReply(QNetworkReply *, QList<QSslError>)));
49
+ connect(manager, SIGNAL(requestCreated(QNetworkReply *)), this, SLOT(networkAccessManagerCreatedRequest(QNetworkReply *)));
50
+ }
51
+
52
+ void WebPage::networkAccessManagerCreatedRequest(QNetworkReply *reply) {
53
+ emit requestCreated(reply);
54
+ }
55
+
56
+ void WebPage::networkAccessManagerFinishedReply(QNetworkReply *reply) {
57
+ if (reply->url() == this->currentFrame()->url()) {
58
+ QStringList headers;
59
+ m_lastStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
60
+ QList<QByteArray> list = reply->rawHeaderList();
61
+
62
+ int length = list.size();
63
+ for(int i = 0; i < length; i++) {
64
+ headers << list.at(i)+": "+reply->rawHeader(list.at(i));
65
+ }
66
+
67
+ m_pageHeaders = headers.join("\n");
68
+ }
69
+ emit replyFinished(reply);
42
70
  }
43
71
 
44
72
  void WebPage::loadJavascript() {
@@ -90,7 +118,7 @@ bool WebPage::shouldInterruptJavaScript() {
90
118
  return false;
91
119
  }
92
120
 
93
- QVariant WebPage::invokeCapybaraFunction(const char *name, QStringList &arguments) {
121
+ QVariant WebPage::invokeCapybaraFunction(const char *name, const QStringList &arguments) {
94
122
  QString qname(name);
95
123
  QString objectName("CapybaraInvocation");
96
124
  JavascriptInvocation invocation(qname, arguments);
@@ -99,7 +127,7 @@ QVariant WebPage::invokeCapybaraFunction(const char *name, QStringList &argument
99
127
  return currentFrame()->evaluateJavaScript(javascript);
100
128
  }
101
129
 
102
- QVariant WebPage::invokeCapybaraFunction(QString &name, QStringList &arguments) {
130
+ QVariant WebPage::invokeCapybaraFunction(QString &name, const QStringList &arguments) {
103
131
  return invokeCapybaraFunction(name.toAscii().data(), arguments);
104
132
  }
105
133
 
@@ -132,6 +160,7 @@ bool WebPage::javaScriptPrompt(QWebFrame *frame, const QString &message, const Q
132
160
 
133
161
  void WebPage::loadStarted() {
134
162
  m_loading = true;
163
+ m_errorPageMessage = QString();
135
164
  }
136
165
 
137
166
  void WebPage::loadFinished(bool success) {
@@ -144,7 +173,11 @@ bool WebPage::isLoading() const {
144
173
  }
145
174
 
146
175
  QString WebPage::failureString() {
147
- return QString("Unable to load URL: ") + currentFrame()->requestedUrl().toString();
176
+ QString message = QString("Unable to load URL: ") + currentFrame()->requestedUrl().toString();
177
+ if (m_errorPageMessage.isEmpty())
178
+ return message;
179
+ else
180
+ return message + m_errorPageMessage;
148
181
  }
149
182
 
150
183
  bool WebPage::render(const QString &fileName) {
@@ -182,12 +215,16 @@ QString WebPage::chooseFile(QWebFrame *parentFrame, const QString &suggestedFile
182
215
  }
183
216
 
184
217
  bool WebPage::extension(Extension extension, const ExtensionOption *option, ExtensionReturn *output) {
185
- Q_UNUSED(option);
186
218
  if (extension == ChooseMultipleFilesExtension) {
187
219
  QStringList names = QStringList() << getLastAttachedFileName();
188
220
  static_cast<ChooseMultipleFilesExtensionReturn*>(output)->fileNames = names;
189
221
  return true;
190
222
  }
223
+ else if (extension == QWebPage::ErrorPageExtension) {
224
+ ErrorPageExtensionOption *errorOption = (ErrorPageExtensionOption*) option;
225
+ m_errorPageMessage = " because of error loading " + errorOption->url.toString() + ": " + errorOption->errorString;
226
+ return false;
227
+ }
191
228
  return false;
192
229
  }
193
230
 
@@ -195,30 +232,11 @@ QString WebPage::getLastAttachedFileName() {
195
232
  return currentFrame()->evaluateJavaScript(QString("Capybara.lastAttachedFile")).toString();
196
233
  }
197
234
 
198
- void WebPage::replyFinished(QNetworkReply *reply) {
199
- if (reply->url() == this->currentFrame()->url()) {
200
- QStringList headers;
201
- m_lastStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
202
- QList<QByteArray> list = reply->rawHeaderList();
203
-
204
- int length = list.size();
205
- for(int i = 0; i < length; i++) {
206
- headers << list.at(i)+": "+reply->rawHeader(list.at(i));
207
- }
208
-
209
- m_pageHeaders = headers.join("\n");
210
- }
211
- }
212
-
213
235
  void WebPage::handleSslErrorsForReply(QNetworkReply *reply, const QList<QSslError> &errors) {
214
- if (m_ignoreSslErrors)
236
+ if (m_manager->ignoreSslErrors())
215
237
  reply->ignoreSslErrors(errors);
216
238
  }
217
239
 
218
- void WebPage::ignoreSslErrors() {
219
- m_ignoreSslErrors = true;
220
- }
221
-
222
240
  void WebPage::setSkipImageLoading(bool skip) {
223
241
  settings()->setAttribute(QWebSettings::AutoLoadImages, !skip);
224
242
  }
@@ -227,15 +245,6 @@ int WebPage::getLastStatus() {
227
245
  return m_lastStatus;
228
246
  }
229
247
 
230
- void WebPage::resetResponseHeaders() {
231
- m_lastStatus = 0;
232
- m_pageHeaders = QString();
233
- }
234
-
235
- void WebPage::resetConsoleMessages() {
236
- m_consoleMessages.clear();
237
- }
238
-
239
248
  QString WebPage::pageHeaders() {
240
249
  return m_pageHeaders;
241
250
  }
@@ -244,3 +253,41 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply) {
244
253
  UnsupportedContentHandler *handler = new UnsupportedContentHandler(this, reply);
245
254
  Q_UNUSED(handler);
246
255
  }
256
+
257
+ bool WebPage::supportsExtension(Extension extension) const {
258
+ if (extension == ErrorPageExtension)
259
+ return true;
260
+ else if (extension == ChooseMultipleFilesExtension)
261
+ return true;
262
+ else
263
+ return false;
264
+ }
265
+
266
+ QWebPage *WebPage::createWindow(WebWindowType type) {
267
+ Q_UNUSED(type);
268
+ return m_manager->createPage(this);
269
+ }
270
+
271
+ QString WebPage::uuid() {
272
+ return m_uuid;
273
+ }
274
+
275
+ QString WebPage::getWindowName() {
276
+ QVariant windowName = mainFrame()->evaluateJavaScript("window.name");
277
+
278
+ if (windowName.isValid())
279
+ return windowName.toString();
280
+ else
281
+ return "";
282
+ }
283
+
284
+ bool WebPage::matchesWindowSelector(QString selector) {
285
+ return (selector == getWindowName() ||
286
+ selector == mainFrame()->title() ||
287
+ selector == mainFrame()->url().toString() ||
288
+ selector == uuid());
289
+ }
290
+
291
+ void WebPage::setFocus() {
292
+ m_manager->setCurrentPage(this);
293
+ }
data/src/WebPage.h CHANGED
@@ -1,25 +1,31 @@
1
+ #ifndef _WEBPAGE_H
2
+ #define _WEBPAGE_H
1
3
  #include <QtWebKit>
2
4
 
5
+ class WebPageManager;
6
+
3
7
  class WebPage : public QWebPage {
4
8
  Q_OBJECT
5
9
 
6
10
  public:
7
- WebPage(QObject *parent = 0);
8
- QVariant invokeCapybaraFunction(const char *name, QStringList &arguments);
9
- QVariant invokeCapybaraFunction(QString &name, QStringList &arguments);
11
+ WebPage(WebPageManager *, QObject *parent = 0);
12
+ QVariant invokeCapybaraFunction(const char *name, const QStringList &arguments);
13
+ QVariant invokeCapybaraFunction(QString &name, const QStringList &arguments);
10
14
  QString failureString();
11
15
  QString userAgentForUrl(const QUrl &url ) const;
12
16
  void setUserAgent(QString userAgent);
13
17
  int getLastStatus();
14
- void resetResponseHeaders();
15
18
  void setCustomNetworkAccessManager();
16
19
  bool render(const QString &fileName);
17
20
  virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
18
- void ignoreSslErrors();
19
21
  void setSkipImageLoading(bool skip);
20
22
  QString consoleMessages();
21
- void resetConsoleMessages();
22
23
  void resetWindowSize();
24
+ QWebPage *createWindow(WebWindowType type);
25
+ QString uuid();
26
+ QString getWindowName();
27
+ bool matchesWindowSelector(QString);
28
+ void setFocus();
23
29
 
24
30
  public slots:
25
31
  bool shouldInterruptJavaScript();
@@ -29,12 +35,15 @@ class WebPage : public QWebPage {
29
35
  bool isLoading() const;
30
36
  QString pageHeaders();
31
37
  void frameCreated(QWebFrame *);
32
- void replyFinished(QNetworkReply *reply);
33
38
  void handleSslErrorsForReply(QNetworkReply *reply, const QList<QSslError> &);
34
39
  void handleUnsupportedContent(QNetworkReply *reply);
40
+ void networkAccessManagerCreatedRequest(QNetworkReply *reply);
41
+ void networkAccessManagerFinishedReply(QNetworkReply *reply);
35
42
 
36
43
  signals:
37
44
  void pageFinished(bool);
45
+ void requestCreated(QNetworkReply *reply);
46
+ void replyFinished(QNetworkReply *reply);
38
47
 
39
48
  protected:
40
49
  virtual void javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID);
@@ -42,6 +51,7 @@ class WebPage : public QWebPage {
42
51
  virtual bool javaScriptConfirm(QWebFrame *frame, const QString &message);
43
52
  virtual bool javaScriptPrompt(QWebFrame *frame, const QString &message, const QString &defaultValue, QString *result);
44
53
  virtual QString chooseFile(QWebFrame * parentFrame, const QString &suggestedFile);
54
+ virtual bool supportsExtension(Extension extension) const;
45
55
 
46
56
  private:
47
57
  QString m_capybaraJavascript;
@@ -52,7 +62,11 @@ class WebPage : public QWebPage {
52
62
  void setUserStylesheet();
53
63
  int m_lastStatus;
54
64
  QString m_pageHeaders;
55
- bool m_ignoreSslErrors;
56
65
  QStringList m_consoleMessages;
66
+ QString m_uuid;
67
+ WebPageManager *m_manager;
68
+ QString m_errorPageMessage;
57
69
  };
58
70
 
71
+ #endif //_WEBPAGE_H
72
+