~osomon/oxide/i18n

« back to all changes in this revision

Viewing changes to shared/browser/oxide_web_frame.cc

  • Committer: Olivier Tilloy
  • Date: 2014-04-08 10:03:11 UTC
  • mfrom: (312.2.173 oxide)
  • Revision ID: olivier.tilloy@canonical.com-20140408100311-b3zb7q1jfrevbrf1
Merge the latest changes from trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
#include "base/lazy_instance.h"
24
24
#include "base/logging.h"
 
25
#include "content/browser/frame_host/frame_tree.h"
25
26
#include "content/browser/frame_host/frame_tree_node.h"
26
27
#include "content/public/browser/render_view_host.h"
27
28
#include "content/public/browser/web_contents.h"
91
92
 
92
93
void WebFrame::OnChildAdded(WebFrame* child) {}
93
94
void WebFrame::OnChildRemoved(WebFrame* child) {}
94
 
void WebFrame::OnURLChanged() {}
95
95
 
96
96
WebFrame::WebFrame(
97
97
    content::FrameTreeNode* node,
98
98
    WebView* view) :
99
 
    frame_tree_node_(node),
 
99
    frame_tree_node_id_(node->frame_tree_node_id()),
100
100
    parent_(NULL),
101
101
    view_(view),
102
102
    next_message_serial_(0),
103
 
    weak_factory_(this) {
 
103
    weak_factory_(this),
 
104
    destroyed_(false) {
104
105
  std::pair<FrameMapIterator, bool> rv =
105
 
      g_frame_map.Get().insert(std::make_pair(node->frame_tree_node_id(),
 
106
      g_frame_map.Get().insert(std::make_pair(frame_tree_node_id_,
106
107
                                              this));
107
108
  CHECK(rv.second);
108
109
}
109
110
 
110
111
WebFrame::~WebFrame() {
 
112
  CHECK(destroyed_) << "WebFrame deleted without calling Destroy()";
 
113
}
 
114
 
 
115
void WebFrame::Destroy() {
111
116
  while (ChildCount() > 0) {
112
 
    delete ChildAt(0);
 
117
    ChildAt(0)->Destroy();
113
118
  }
114
119
 
115
120
  while (true) {
136
141
    parent_->RemoveChild(this);
137
142
  }
138
143
 
139
 
  g_frame_map.Get().erase(frame_tree_node_->frame_tree_node_id());
 
144
  g_frame_map.Get().erase(frame_tree_node_id_);
 
145
 
 
146
  destroyed_ = true;
 
147
  delete this;
140
148
}
141
149
 
142
150
// static
143
151
WebFrame* WebFrame::FromFrameTreeNode(content::FrameTreeNode* node) {
144
 
  FrameMapIterator it = g_frame_map.Get().find(node->frame_tree_node_id());
 
152
  return FromFrameTreeNodeID(node->frame_tree_node_id());
 
153
}
 
154
 
 
155
// static
 
156
WebFrame* WebFrame::FromFrameTreeNodeID(int64 frame_tree_node_id) {
 
157
  FrameMapIterator it = g_frame_map.Get().find(frame_tree_node_id);
145
158
  return it == g_frame_map.Get().end() ? NULL : it->second;
146
159
}
147
160
 
148
 
int64 WebFrame::FrameTreeNodeID() const {
149
 
  return frame_tree_node()->frame_tree_node_id();
 
161
GURL WebFrame::GetURL() const {
 
162
  return const_cast<WebFrame *>(this)->GetFrameTreeNode()->current_url();
150
163
}
151
164
 
152
 
void WebFrame::SetURL(const GURL& url) {
153
 
  url_ = url;
154
 
  OnURLChanged();
 
165
content::FrameTreeNode* WebFrame::GetFrameTreeNode() {
 
166
  return view_->GetFrameTree()->FindByID(frame_tree_node_id_);
155
167
}
156
168
 
157
169
void WebFrame::SetParent(WebFrame* parent) {