otherinbox-capybara-webkit 0.12.0 → 0.12.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+