Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: components/web_view/frame_tree.cc

Issue 1391963004: Correctly record and pass around navigation start time. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/web_view/frame_tree.h ('k') | components/web_view/navigation_controller.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/web_view/frame_tree.h" 5 #include "components/web_view/frame_tree.h"
6 6
7 #include "components/web_view/frame_tree_delegate.h" 7 #include "components/web_view/frame_tree_delegate.h"
8 #include "components/web_view/frame_user_data.h" 8 #include "components/web_view/frame_user_data.h"
9 9
10 namespace web_view { 10 namespace web_view {
11 11
12 FrameTree::FrameTree(uint32_t root_app_id, 12 FrameTree::FrameTree(uint32_t root_app_id,
13 mus::View* view, 13 mus::View* view,
14 mojo::ViewTreeClientPtr view_tree_client, 14 mojo::ViewTreeClientPtr view_tree_client,
15 FrameTreeDelegate* delegate, 15 FrameTreeDelegate* delegate,
16 mojom::FrameClient* root_client, 16 mojom::FrameClient* root_client,
17 scoped_ptr<FrameUserData> user_data, 17 scoped_ptr<FrameUserData> user_data,
18 const Frame::ClientPropertyMap& client_properties) 18 const Frame::ClientPropertyMap& client_properties,
19 base::TimeTicks navigation_start_time)
19 : view_(view), 20 : view_(view),
20 delegate_(delegate), 21 delegate_(delegate),
21 root_(new Frame(this, 22 root_(new Frame(this,
22 view, 23 view,
23 view->id(), 24 view->id(),
24 root_app_id, 25 root_app_id,
25 ViewOwnership::DOESNT_OWN_VIEW, 26 ViewOwnership::DOESNT_OWN_VIEW,
26 root_client, 27 root_client,
27 user_data.Pass(), 28 user_data.Pass(),
28 client_properties)), 29 client_properties)),
29 progress_(0.f), 30 progress_(0.f),
30 change_id_(1u) { 31 change_id_(1u) {
31 root_->Init(nullptr, view_tree_client.Pass(), nullptr); 32 root_->Init(nullptr, view_tree_client.Pass(), nullptr, navigation_start_time);
32 } 33 }
33 34
34 FrameTree::~FrameTree() { 35 FrameTree::~FrameTree() {
35 // Destroy the root explicitly in case it calls back to us for state (such 36 // Destroy the root explicitly in case it calls back to us for state (such
36 // as to see if it is the root). 37 // as to see if it is the root).
37 delete root_; 38 delete root_;
38 root_ = nullptr; 39 root_ = nullptr;
39 } 40 }
40 41
41 Frame* FrameTree::CreateChildFrame( 42 Frame* FrameTree::CreateChildFrame(
42 Frame* parent, 43 Frame* parent,
43 mojo::InterfaceRequest<mojom::Frame> frame_request, 44 mojo::InterfaceRequest<mojom::Frame> frame_request,
44 mojom::FrameClientPtr client, 45 mojom::FrameClientPtr client,
45 uint32_t frame_id, 46 uint32_t frame_id,
46 uint32_t app_id, 47 uint32_t app_id,
47 const Frame::ClientPropertyMap& client_properties) { 48 const Frame::ClientPropertyMap& client_properties) {
48 mojom::FrameClient* raw_client = client.get(); 49 mojom::FrameClient* raw_client = client.get();
49 scoped_ptr<FrameUserData> user_data = 50 scoped_ptr<FrameUserData> user_data =
50 delegate_->CreateUserDataForNewFrame(client.Pass()); 51 delegate_->CreateUserDataForNewFrame(client.Pass());
51 mus::View* frame_view = root_->view()->GetChildById(frame_id); 52 mus::View* frame_view = root_->view()->GetChildById(frame_id);
52 // |frame_view| may be null if the View hasn't been created yet. If this is 53 // |frame_view| may be null if the View hasn't been created yet. If this is
53 // the case the View will be connected to the Frame in Frame::OnTreeChanged. 54 // the case the View will be connected to the Frame in Frame::OnTreeChanged.
54 Frame* frame = 55 Frame* frame =
55 new Frame(this, frame_view, frame_id, app_id, ViewOwnership::OWNS_VIEW, 56 new Frame(this, frame_view, frame_id, app_id, ViewOwnership::OWNS_VIEW,
56 raw_client, user_data.Pass(), client_properties); 57 raw_client, user_data.Pass(), client_properties);
57 frame->Init(parent, nullptr, frame_request.Pass()); 58 frame->Init(parent, nullptr, frame_request.Pass(), base::TimeTicks());
58 return frame; 59 return frame;
59 } 60 }
60 61
61 uint32_t FrameTree::AdvanceChangeID() { 62 uint32_t FrameTree::AdvanceChangeID() {
62 return ++change_id_; 63 return ++change_id_;
63 } 64 }
64 65
65 void FrameTree::LoadingStateChanged() { 66 void FrameTree::LoadingStateChanged() {
66 const bool loading = root_->IsLoading(); 67 const bool loading = root_->IsLoading();
67 if (loading) { 68 if (loading) {
(...skipping 18 matching lines...) Expand all
86 delegate_->DidNavigateLocally(source, url); 87 delegate_->DidNavigateLocally(source, url);
87 } 88 }
88 89
89 void FrameTree::ClientPropertyChanged(const Frame* source, 90 void FrameTree::ClientPropertyChanged(const Frame* source,
90 const mojo::String& name, 91 const mojo::String& name,
91 const mojo::Array<uint8_t>& value) { 92 const mojo::Array<uint8_t>& value) {
92 root_->NotifyClientPropertyChanged(source, name, value); 93 root_->NotifyClientPropertyChanged(source, name, value);
93 } 94 }
94 95
95 } // namespace web_view 96 } // namespace web_view
OLDNEW
« no previous file with comments | « components/web_view/frame_tree.h ('k') | components/web_view/navigation_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698