capybara-webkit 0.12.1 → 0.13.0

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 (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
  };