capybara-webkit 0.12.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. data/.gitignore +2 -1
  2. data/GOALS +9 -0
  3. data/Gemfile.lock +15 -12
  4. data/LICENSE +1 -1
  5. data/NEWS.md +18 -0
  6. data/README.md +81 -2
  7. data/capybara-webkit.gemspec +1 -1
  8. data/lib/capybara/webkit.rb +11 -6
  9. data/lib/capybara/{driver/webkit → webkit}/browser.rb +90 -4
  10. data/lib/capybara/{driver/webkit → webkit}/connection.rb +48 -47
  11. data/lib/capybara/{driver/webkit → webkit}/cookie_jar.rb +1 -1
  12. data/lib/capybara/webkit/driver.rb +186 -0
  13. data/lib/capybara/webkit/errors.rb +10 -0
  14. data/lib/capybara/{driver/webkit → webkit}/node.rb +12 -4
  15. data/lib/capybara/{driver/webkit → webkit}/socket_debugger.rb +4 -1
  16. data/lib/capybara/{driver/webkit → webkit}/version.rb +1 -1
  17. data/lib/capybara_webkit_builder.rb +17 -3
  18. data/spec/browser_spec.rb +95 -7
  19. data/spec/connection_spec.rb +16 -5
  20. data/spec/cookie_jar_spec.rb +3 -3
  21. data/spec/driver_rendering_spec.rb +19 -26
  22. data/spec/driver_resize_window_spec.rb +3 -3
  23. data/spec/driver_spec.rb +1200 -822
  24. data/spec/integration/driver_spec.rb +4 -3
  25. data/spec/selenium_compatibility_spec.rb +49 -0
  26. data/spec/spec_helper.rb +14 -6
  27. data/spec/support/app_runner.rb +94 -0
  28. data/src/Authenticate.cpp +18 -0
  29. data/src/Authenticate.h +12 -0
  30. data/src/Body.h +3 -5
  31. data/src/ClearCookies.cpp +3 -5
  32. data/src/ClearCookies.h +3 -5
  33. data/src/ClearPromptText.cpp +11 -0
  34. data/src/ClearPromptText.h +9 -0
  35. data/src/Command.cpp +4 -15
  36. data/src/Command.h +3 -14
  37. data/src/CommandFactory.cpp +20 -6
  38. data/src/CommandFactory.h +3 -2
  39. data/src/CommandParser.cpp +1 -1
  40. data/src/Connection.cpp +22 -21
  41. data/src/Connection.h +5 -6
  42. data/src/ConsoleMessages.cpp +2 -1
  43. data/src/ConsoleMessages.h +3 -5
  44. data/src/CurrentUrl.cpp +9 -48
  45. data/src/CurrentUrl.h +8 -8
  46. data/src/EnableLogging.cpp +10 -0
  47. data/src/EnableLogging.h +12 -0
  48. data/src/Evaluate.cpp +2 -1
  49. data/src/Evaluate.h +3 -5
  50. data/src/Execute.cpp +2 -1
  51. data/src/Execute.h +3 -5
  52. data/src/Find.cpp +3 -2
  53. data/src/Find.h +3 -5
  54. data/src/FrameFocus.cpp +3 -2
  55. data/src/FrameFocus.h +3 -4
  56. data/src/GetCookies.cpp +3 -4
  57. data/src/GetCookies.h +3 -5
  58. data/src/GetTimeout.cpp +9 -0
  59. data/src/GetTimeout.h +11 -0
  60. data/src/GetWindowHandle.cpp +11 -0
  61. data/src/GetWindowHandle.h +10 -0
  62. data/src/GetWindowHandles.cpp +20 -0
  63. data/src/GetWindowHandles.h +10 -0
  64. data/src/Header.cpp +2 -1
  65. data/src/Header.h +3 -5
  66. data/src/Headers.cpp +8 -2
  67. data/src/Headers.h +3 -5
  68. data/src/IgnoreSslErrors.cpp +4 -3
  69. data/src/IgnoreSslErrors.h +3 -5
  70. data/src/JavascriptAlertMessages.cpp +10 -0
  71. data/src/JavascriptAlertMessages.h +9 -0
  72. data/src/JavascriptConfirmMessages.cpp +10 -0
  73. data/src/JavascriptConfirmMessages.h +9 -0
  74. data/src/JavascriptInvocation.cpp +1 -1
  75. data/src/JavascriptInvocation.h +1 -1
  76. data/src/JavascriptPromptMessages.cpp +10 -0
  77. data/src/JavascriptPromptMessages.h +9 -0
  78. data/src/NetworkAccessManager.cpp +38 -5
  79. data/src/NetworkAccessManager.h +20 -0
  80. data/src/Node.cpp +6 -1
  81. data/src/Node.h +4 -5
  82. data/src/NullCommand.cpp +5 -2
  83. data/src/NullCommand.h +4 -3
  84. data/src/PageLoadingCommand.cpp +12 -7
  85. data/src/PageLoadingCommand.h +6 -9
  86. data/src/Render.cpp +2 -1
  87. data/src/Render.h +3 -5
  88. data/src/RequestedUrl.cpp +2 -1
  89. data/src/RequestedUrl.h +3 -5
  90. data/src/Reset.cpp +3 -17
  91. data/src/Reset.h +3 -8
  92. data/src/ResizeWindow.cpp +2 -1
  93. data/src/ResizeWindow.h +3 -5
  94. data/src/Response.cpp +4 -0
  95. data/src/Response.h +1 -0
  96. data/src/Server.cpp +2 -3
  97. data/src/Server.h +0 -2
  98. data/src/SetConfirmAction.cpp +11 -0
  99. data/src/SetConfirmAction.h +9 -0
  100. data/src/SetCookie.cpp +3 -4
  101. data/src/SetCookie.h +3 -5
  102. data/src/SetPromptAction.cpp +11 -0
  103. data/src/SetPromptAction.h +9 -0
  104. data/src/SetPromptText.cpp +11 -0
  105. data/src/SetPromptText.h +9 -0
  106. data/src/SetProxy.cpp +2 -1
  107. data/src/SetProxy.h +3 -5
  108. data/src/SetSkipImageLoading.cpp +12 -0
  109. data/src/SetSkipImageLoading.h +9 -0
  110. data/src/SetTimeout.cpp +19 -0
  111. data/src/SetTimeout.h +9 -0
  112. data/src/SocketCommand.cpp +21 -0
  113. data/src/SocketCommand.h +29 -0
  114. data/src/Source.cpp +3 -2
  115. data/src/Source.h +3 -4
  116. data/src/Status.cpp +2 -1
  117. data/src/Status.h +3 -5
  118. data/src/TimeoutCommand.cpp +69 -0
  119. data/src/TimeoutCommand.h +41 -0
  120. data/src/UnsupportedContentHandler.cpp +11 -17
  121. data/src/UnsupportedContentHandler.h +5 -3
  122. data/src/Url.cpp +2 -1
  123. data/src/Url.h +3 -5
  124. data/src/Visit.cpp +3 -2
  125. data/src/Visit.h +3 -5
  126. data/src/WebPage.cpp +129 -44
  127. data/src/WebPage.h +37 -11
  128. data/src/WebPageManager.cpp +127 -0
  129. data/src/WebPageManager.h +59 -0
  130. data/src/WindowFocus.cpp +32 -0
  131. data/src/WindowFocus.h +15 -0
  132. data/src/body.cpp +2 -1
  133. data/src/capybara.js +38 -10
  134. data/src/find_command.h +17 -2
  135. data/src/main.cpp +0 -2
  136. data/src/webkit_server.pro +36 -0
  137. data/templates/Command.cpp +2 -4
  138. data/templates/Command.h +3 -3
  139. metadata +106 -27
  140. data/ChangeLog +0 -70
  141. data/lib/capybara/driver/webkit.rb +0 -136
@@ -8,12 +8,13 @@ class Response;
8
8
  class CommandParser;
9
9
  class CommandFactory;
10
10
  class PageLoadingCommand;
11
+ class WebPageManager;
11
12
 
12
13
  class Connection : public QObject {
13
14
  Q_OBJECT
14
15
 
15
16
  public:
16
- Connection(QTcpSocket *socket, WebPage *page, QObject *parent = 0);
17
+ Connection(QTcpSocket *socket, WebPageManager *manager, QObject *parent = 0);
17
18
 
18
19
  public slots:
19
20
  void commandReady(Command *command);
@@ -21,17 +22,15 @@ class Connection : public QObject {
21
22
  void pendingLoadFinished(bool success);
22
23
 
23
24
  private:
24
- void startCommand();
25
+ void startCommand(Command *);
25
26
  void writeResponse(Response *response);
26
27
  void writePageLoadFailure();
27
28
 
28
29
  QTcpSocket *m_socket;
29
- Command *m_queuedCommand;
30
- WebPage *m_page;
30
+ WebPageManager *m_manager;
31
31
  CommandParser *m_commandParser;
32
32
  CommandFactory *m_commandFactory;
33
- PageLoadingCommand *m_runningCommand;
34
33
  bool m_pageSuccess;
35
- bool m_commandWaiting;
34
+ WebPage *currentPage();
36
35
  };
37
36
 
@@ -1,7 +1,8 @@
1
1
  #include "ConsoleMessages.h"
2
2
  #include "WebPage.h"
3
+ #include "WebPageManager.h"
3
4
 
4
- ConsoleMessages::ConsoleMessages(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
5
+ ConsoleMessages::ConsoleMessages(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
5
6
  }
6
7
 
7
8
  void ConsoleMessages::start() {
@@ -1,12 +1,10 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
-
5
- class ConsoleMessages : public Command {
3
+ class ConsoleMessages : public SocketCommand {
6
4
  Q_OBJECT
7
5
 
8
6
  public:
9
- ConsoleMessages(WebPage *page, QStringList &arguments, QObject *parent = 0);
7
+ ConsoleMessages(WebPageManager *, QStringList &arguments, QObject *parent = 0);
10
8
  virtual void start();
11
9
  };
12
10
 
@@ -1,57 +1,17 @@
1
1
  #include "CurrentUrl.h"
2
2
  #include "WebPage.h"
3
+ #include "WebPageManager.h"
3
4
 
4
- CurrentUrl::CurrentUrl(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
5
+ CurrentUrl::CurrentUrl(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
5
6
  }
6
7
 
7
- /*
8
- * This CurrentUrl command attempts to produce a current_url value consistent
9
- * with that returned by the Selenium WebDriver Capybara driver.
10
- *
11
- * It does not currently return the correct value in the case of an iframe whose
12
- * source URL results in a redirect because the loading of the iframe does not
13
- * generate a history item. This is most likely a rare case and is consistent
14
- * with the current behavior of the capybara-webkit driver.
15
- *
16
- * The following two values are *not* affected by Javascript pushState.
17
- *
18
- * QWebFrame->url()
19
- * QWebHistoryItem.originalUrl()
20
- *
21
- * The following two values *are* affected by Javascript pushState.
22
- *
23
- * QWebFrame->requestedUrl()
24
- * QWebHistoryItem.url()
25
- *
26
- * In the cases that we have access to both the QWebFrame values and the
27
- * correct history item for that frame, we can compare the values and determine
28
- * if a redirect occurred and if pushState was used. The table below describes
29
- * the various combinations of URL values that are possible.
30
- *
31
- * O -> originally requested URL
32
- * R -> URL after redirection
33
- * P -> URL set by pushState
34
- * * -> denotes the desired URL value from the frame
35
- *
36
- * frame history
37
- * case url requestedUrl url originalUrl
38
- * -----------------------------------------------------------------
39
- * regular load O O* O O
40
- *
41
- * redirect w/o R* O R O
42
- * pushState
43
- *
44
- * pushState O P* P O
45
- * only
46
- *
47
- * redirect w/ R P* P O
48
- * pushState
49
- *
50
- * Based on the above information, we only need to check for the case of a
51
- * redirect w/o pushState, in which case QWebFrame->url() will have the correct
52
- * current_url value. In all other cases QWebFrame->requestedUrl() is correct.
53
- */
54
8
  void CurrentUrl::start() {
9
+ #if QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)
10
+ QStringList arguments;
11
+ QVariant result = page()->invokeCapybaraFunction("currentUrl", arguments);
12
+ QString url = result.toString();
13
+ emit finished(new Response(true, url));
14
+ #else
55
15
  QUrl humanUrl = wasRedirectedAndNotModifiedByJavascript() ?
56
16
  page()->currentFrame()->url() : page()->currentFrame()->requestedUrl();
57
17
  QByteArray encodedBytes = humanUrl.toEncoded();
@@ -64,5 +24,6 @@ bool CurrentUrl::wasRegularLoad() {
64
24
 
65
25
  bool CurrentUrl::wasRedirectedAndNotModifiedByJavascript() {
66
26
  return !wasRegularLoad() && page()->currentFrame()->url() == page()->history()->currentItem().url();
27
+ #endif
67
28
  }
68
29
 
@@ -1,16 +1,16 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
-
5
- class CurrentUrl : public Command {
3
+ class CurrentUrl : public SocketCommand {
6
4
  Q_OBJECT
7
5
 
8
6
  public:
9
- CurrentUrl(WebPage *page, QStringList &arguments, QObject *parent = 0);
7
+ CurrentUrl(WebPageManager *, QStringList &arguments, QObject *parent = 0);
10
8
  virtual void start();
9
+ #if QT_VERSION < QT_VERSION_CHECK(4, 8, 0)
11
10
 
12
- private:
13
- bool wasRegularLoad();
14
- bool wasRedirectedAndNotModifiedByJavascript();
11
+ private:
12
+ bool wasRegularLoad();
13
+ bool wasRedirectedAndNotModifiedByJavascript();
14
+ #endif
15
15
  };
16
16
 
@@ -0,0 +1,10 @@
1
+ #include "EnableLogging.h"
2
+ #include "WebPageManager.h"
3
+
4
+ EnableLogging::EnableLogging(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
5
+ }
6
+
7
+ void EnableLogging::start() {
8
+ manager()->enableLogging();
9
+ emit finished(new Response(true));
10
+ }
@@ -0,0 +1,12 @@
1
+ #include "SocketCommand.h"
2
+
3
+ class WebPageManager;
4
+
5
+ class EnableLogging : public SocketCommand {
6
+ Q_OBJECT
7
+
8
+ public:
9
+ EnableLogging(WebPageManager *, QStringList &arguments, QObject *parent = 0);
10
+ virtual void start();
11
+ };
12
+
@@ -1,8 +1,9 @@
1
1
  #include "Evaluate.h"
2
2
  #include "WebPage.h"
3
+ #include "WebPageManager.h"
3
4
  #include <iostream>
4
5
 
5
- Evaluate::Evaluate(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
6
+ Evaluate::Evaluate(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
6
7
  m_buffer = "";
7
8
  }
8
9
 
@@ -1,14 +1,12 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
3
  #include <QVariantList>
4
4
 
5
- class WebPage;
6
-
7
- class Evaluate : public Command {
5
+ class Evaluate : public SocketCommand {
8
6
  Q_OBJECT
9
7
 
10
8
  public:
11
- Evaluate(WebPage *page, QStringList &arguments, QObject *parent = 0);
9
+ Evaluate(WebPageManager *, QStringList &arguments, QObject *parent = 0);
12
10
  virtual void start();
13
11
 
14
12
  private:
@@ -1,7 +1,8 @@
1
1
  #include "Execute.h"
2
2
  #include "WebPage.h"
3
+ #include "WebPageManager.h"
3
4
 
4
- Execute::Execute(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
5
+ Execute::Execute(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
5
6
  }
6
7
 
7
8
  void Execute::start() {
@@ -1,12 +1,10 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
-
5
- class Execute : public Command {
3
+ class Execute : public SocketCommand {
6
4
  Q_OBJECT
7
5
 
8
6
  public:
9
- Execute(WebPage *page, QStringList &arguments, QObject *parent = 0);
7
+ Execute(WebPageManager *, QStringList &arguments, QObject *parent = 0);
10
8
  virtual void start();
11
9
  };
12
10
 
@@ -1,8 +1,9 @@
1
1
  #include "Find.h"
2
- #include "Command.h"
2
+ #include "SocketCommand.h"
3
3
  #include "WebPage.h"
4
+ #include "WebPageManager.h"
4
5
 
5
- Find::Find(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
6
+ Find::Find(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
6
7
  }
7
8
 
8
9
  void Find::start() {
data/src/Find.h CHANGED
@@ -1,12 +1,10 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
-
5
- class Find : public Command {
3
+ class Find : public SocketCommand {
6
4
  Q_OBJECT
7
5
 
8
6
  public:
9
- Find(WebPage *page, QStringList &arguments, QObject *parent = 0);
7
+ Find(WebPageManager *, QStringList &arguments, QObject *parent = 0);
10
8
  virtual void start();
11
9
  };
12
10
 
@@ -1,8 +1,9 @@
1
1
  #include "FrameFocus.h"
2
- #include "Command.h"
2
+ #include "SocketCommand.h"
3
3
  #include "WebPage.h"
4
+ #include "WebPageManager.h"
4
5
 
5
- FrameFocus::FrameFocus(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
6
+ FrameFocus::FrameFocus(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
6
7
  }
7
8
 
8
9
  void FrameFocus::start() {
@@ -1,13 +1,12 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
3
  class QWebFrame;
5
4
 
6
- class FrameFocus : public Command {
5
+ class FrameFocus : public SocketCommand {
7
6
  Q_OBJECT
8
7
 
9
8
  public:
10
- FrameFocus(WebPage *page, QStringList &arguments, QObject *parent = 0);
9
+ FrameFocus(WebPageManager *, QStringList &arguments, QObject *parent = 0);
11
10
  virtual void start();
12
11
 
13
12
  private:
@@ -1,17 +1,16 @@
1
1
  #include "GetCookies.h"
2
2
  #include "WebPage.h"
3
+ #include "WebPageManager.h"
3
4
  #include "NetworkCookieJar.h"
4
5
 
5
- GetCookies::GetCookies(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent)
6
+ GetCookies::GetCookies(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent)
6
7
  {
7
8
  m_buffer = "";
8
9
  }
9
10
 
10
11
  void GetCookies::start()
11
12
  {
12
- NetworkCookieJar *jar = qobject_cast<NetworkCookieJar*>(page()
13
- ->networkAccessManager()
14
- ->cookieJar());
13
+ NetworkCookieJar *jar = manager()->cookieJar();
15
14
  foreach (QNetworkCookie cookie, jar->getAllCookies()) {
16
15
  m_buffer.append(cookie.toRawForm());
17
16
  m_buffer.append("\n");
@@ -1,12 +1,10 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
-
5
- class GetCookies : public Command {
3
+ class GetCookies : public SocketCommand {
6
4
  Q_OBJECT;
7
5
 
8
6
  public:
9
- GetCookies(WebPage *page, QStringList &arguments, QObject *parent = 0);
7
+ GetCookies(WebPageManager *, QStringList &arguments, QObject *parent = 0);
10
8
  virtual void start();
11
9
 
12
10
  private:
@@ -0,0 +1,9 @@
1
+ #include "GetTimeout.h"
2
+ #include "WebPageManager.h"
3
+
4
+ GetTimeout::GetTimeout(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
5
+ }
6
+
7
+ void GetTimeout::start() {
8
+ emit finished(new Response(true, QString::number(manager()->getTimeout())));
9
+ }
@@ -0,0 +1,11 @@
1
+ #include "SocketCommand.h"
2
+
3
+ class WebPageManager;
4
+
5
+ class GetTimeout : public SocketCommand {
6
+ Q_OBJECT;
7
+
8
+ public:
9
+ GetTimeout(WebPageManager *page, QStringList &arguments, QObject *parent = 0);
10
+ virtual void start();
11
+ };
@@ -0,0 +1,11 @@
1
+ #include "GetWindowHandle.h"
2
+ #include "WebPage.h"
3
+ #include "WebPageManager.h"
4
+ #include <QStringList>
5
+
6
+ GetWindowHandle::GetWindowHandle(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
7
+ }
8
+
9
+ void GetWindowHandle::start() {
10
+ emit finished(new Response(true, page()->uuid()));
11
+ }
@@ -0,0 +1,10 @@
1
+ #include "SocketCommand.h"
2
+
3
+ class GetWindowHandle : public SocketCommand {
4
+ Q_OBJECT
5
+
6
+ public:
7
+ GetWindowHandle(WebPageManager *, QStringList &arguments, QObject *parent = 0);
8
+ virtual void start();
9
+ };
10
+
@@ -0,0 +1,20 @@
1
+ #include "GetWindowHandles.h"
2
+ #include "WebPageManager.h"
3
+ #include "CommandFactory.h"
4
+ #include "WebPage.h"
5
+ #include <QStringList>
6
+
7
+ GetWindowHandles::GetWindowHandles(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
8
+ }
9
+
10
+ void GetWindowHandles::start() {
11
+ QString handles = "[";
12
+ QStringList stringList;
13
+
14
+ foreach(WebPage *page, manager()->pages())
15
+ stringList.append("\"" + page->uuid() + "\"");
16
+
17
+ handles += stringList.join(",") + "]";
18
+
19
+ emit finished(new Response(true, handles));
20
+ }
@@ -0,0 +1,10 @@
1
+ #include "SocketCommand.h"
2
+
3
+ class GetWindowHandles : public SocketCommand {
4
+ Q_OBJECT
5
+
6
+ public:
7
+ GetWindowHandles(WebPageManager *, QStringList &arguments, QObject *parent = 0);
8
+ virtual void start();
9
+ };
10
+
@@ -1,8 +1,9 @@
1
1
  #include "Header.h"
2
2
  #include "WebPage.h"
3
+ #include "WebPageManager.h"
3
4
  #include "NetworkAccessManager.h"
4
5
 
5
- Header::Header(WebPage *page, QStringList &arguments, QObject *parent) : Command(page, arguments, parent) {
6
+ Header::Header(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
6
7
  }
7
8
 
8
9
  void Header::start() {
@@ -1,11 +1,9 @@
1
- #include "Command.h"
1
+ #include "SocketCommand.h"
2
2
 
3
- class WebPage;
4
-
5
- class Header : public Command {
3
+ class Header : public SocketCommand {
6
4
  Q_OBJECT
7
5
 
8
6
  public:
9
- Header(WebPage *page, QStringList &arguments, QObject *parent = 0);
7
+ Header(WebPageManager *, QStringList &arguments, QObject *parent = 0);
10
8
  virtual void start();
11
9
  };