~chrisccoulson/oxide/lp1504853

« back to all changes in this revision

Viewing changes to qt/core/browser/oxide_qt_web_frame.h

Move WebFrame management out of WebView in to a new class. This also removes our dependency on content::FrameTreeNode

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
// vim:expandtab:shiftwidth=2:tabstop=2:
2
 
// Copyright (C) 2013 Canonical Ltd.
 
2
// Copyright (C) 2013-2015 Canonical Ltd.
3
3
 
4
4
// This library is free software; you can redistribute it and/or
5
5
// modify it under the terms of the GNU Lesser General Public
22
22
#include <QtGlobal>
23
23
 
24
24
#include "base/macros.h"
25
 
#include "base/memory/scoped_ptr.h"
26
25
 
27
26
#include "qt/core/glue/oxide_qt_web_frame_proxy.h"
28
 
#include "shared/browser/oxide_web_frame.h"
 
27
#include "shared/browser/oxide_script_message_target.h"
 
28
 
 
29
namespace content {
 
30
class RenderFrameHost;
 
31
}
29
32
 
30
33
namespace oxide {
31
34
 
32
 
class WebView;
 
35
class WebFrame;
33
36
 
34
37
namespace qt {
35
38
 
36
39
class ScriptMessageRequest;
37
40
class WebFrameProxyClient;
38
41
 
39
 
class WebFrame : public oxide::WebFrame,
40
 
                 public WebFrameProxy {
 
42
class WebFrame : public WebFrameProxy,
 
43
                 public oxide::ScriptMessageTarget {
41
44
 public:
42
 
  WebFrame(content::RenderFrameHost* render_frame_host,
43
 
           oxide::WebView* view);
 
45
  WebFrame(oxide::WebFrame* frame);
44
46
 
45
47
  static WebFrame* FromProxyHandle(WebFrameProxyHandle* handle);
46
48
 
 
49
  static WebFrame* FromSharedWebFrame(oxide::WebFrame* frame);
 
50
 
 
51
  static WebFrame* FromRenderFrameHost(content::RenderFrameHost* host);
 
52
 
 
53
  WebFrameProxyClient* client() const { return client_; }
 
54
 
47
55
 private:
48
56
  ~WebFrame() override;
49
57
 
52
60
  const oxide::ScriptMessageHandler* GetScriptMessageHandlerAt(
53
61
      size_t index) const override;
54
62
 
55
 
  // oxide::WebFrame implementation
56
 
  void DidCommitNewURL() override;
57
 
  void Delete() override;
58
 
  void OnChildAdded(oxide::WebFrame* child) override;
59
 
  void OnChildRemoved(oxide::WebFrame* child) override;
60
 
 
61
63
  // WebFrameProxy implementation
62
64
  void setClient(WebFrameProxyClient* client) override;
63
65
  QUrl url() const override;
64
66
  WebFrameProxyHandle* parent() const override;
65
 
  int childFrameCount() const override;
66
 
  WebFrameProxyHandle* childFrameAt(int index) const override;
 
67
  QList<WebFrameProxyHandle*> childFrames() const override;
67
68
  bool sendMessage(const QUrl& context,
68
69
                   const QString& msg_id,
69
70
                   const QVariant& payload,
73
74
                          const QVariant& payload) override;
74
75
  QList<ScriptMessageHandlerProxyHandle*>& messageHandlers() override;
75
76
 
 
77
  oxide::WebFrame* frame_; // This is owned in shared/
 
78
 
76
79
  WebFrameProxyClient* client_;
77
80
 
78
81
  QList<ScriptMessageHandlerProxyHandle*> message_handlers_;