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

Side by Side Diff: components/html_viewer/html_frame.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
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/html_viewer/html_frame.h" 5 #include "components/html_viewer/html_frame.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 if (IsLocal()) 264 if (IsLocal())
265 return true; 265 return true;
266 266
267 for (HTMLFrame* child : children_) { 267 for (HTMLFrame* child : children_) {
268 if (child->HasLocalDescendant()) 268 if (child->HasLocalDescendant())
269 return true; 269 return true;
270 } 270 }
271 return false; 271 return false;
272 } 272 }
273 273
274 void HTMLFrame::LoadRequest(const blink::WebURLRequest& request) { 274 void HTMLFrame::LoadRequest(const blink::WebURLRequest& request,
275 base::TimeTicks navigation_start_time) {
275 DCHECK(IsLocal()); 276 DCHECK(IsLocal());
276 277
277 DVLOG(2) << "HTMLFrame::LoadRequest this=" << this << " id=" << id_ 278 DVLOG(2) << "HTMLFrame::LoadRequest this=" << this << " id=" << id_
278 << " URL=" << GURL(request.url()); 279 << " URL=" << GURL(request.url());
279 280
280 pending_navigation_ = false; 281 pending_navigation_ = false;
282 navigation_start_time_ = navigation_start_time;
281 web_frame_->toWebLocalFrame()->loadRequest(request); 283 web_frame_->toWebLocalFrame()->loadRequest(request);
282 } 284 }
283 285
284 HTMLFrame::~HTMLFrame() { 286 HTMLFrame::~HTMLFrame() {
285 DVLOG(2) << "~HTMLFrame this=" << this << " id=" << id_; 287 DVLOG(2) << "~HTMLFrame this=" << this << " id=" << id_;
286 288
287 DCHECK(children_.empty()); 289 DCHECK(children_.empty());
288 290
289 if (parent_) { 291 if (parent_) {
290 auto iter = 292 auto iter =
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 } 389 }
388 390
389 // Ask the Frame to handle the navigation. Returning 391 // Ask the Frame to handle the navigation. Returning
390 // WebNavigationPolicyHandledByClient to inform blink that the navigation is 392 // WebNavigationPolicyHandledByClient to inform blink that the navigation is
391 // being handled. 393 // being handled.
392 DVLOG(2) << "HTMLFrame::decidePolicyForNavigation calls " 394 DVLOG(2) << "HTMLFrame::decidePolicyForNavigation calls "
393 << "Frame::RequestNavigate this=" << this << " id=" << id_ 395 << "Frame::RequestNavigate this=" << this << " id=" << id_
394 << " URL=" << GURL(info.urlRequest.url()); 396 << " URL=" << GURL(info.urlRequest.url());
395 397
396 mojo::URLRequestPtr url_request = mojo::URLRequest::From(info.urlRequest); 398 mojo::URLRequestPtr url_request = mojo::URLRequest::From(info.urlRequest);
399 url_request->originating_time_ticks =
400 base::TimeTicks::Now().ToInternalValue();
397 server_->RequestNavigate( 401 server_->RequestNavigate(
398 WebNavigationPolicyToNavigationTarget(info.defaultPolicy), id_, 402 WebNavigationPolicyToNavigationTarget(info.defaultPolicy), id_,
399 url_request.Pass()); 403 url_request.Pass());
400 404
401 // TODO(yzshen): crbug.com/532556 If the server side drops the request, 405 // TODO(yzshen): crbug.com/532556 If the server side drops the request,
402 // this frame will be in permenant-loading state. We should send a 406 // this frame will be in permenant-loading state. We should send a
403 // notification to mark this frame as not loading in that case. We also need 407 // notification to mark this frame as not loading in that case. We also need
404 // to better keep track of multiple pending navigations. 408 // to better keep track of multiple pending navigations.
405 pending_navigation_ = true; 409 pending_navigation_ = true;
406 return blink::WebNavigationPolicyHandledByClient; 410 return blink::WebNavigationPolicyHandledByClient;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 server_->SetClientProperty(kPropertyFrameOrigin, 487 server_->SetClientProperty(kPropertyFrameOrigin,
484 FrameOriginToClientProperty(frame)); 488 FrameOriginToClientProperty(frame));
485 489
486 // TODO(erg): We need to pass way more information from here through to the 490 // TODO(erg): We need to pass way more information from here through to the
487 // other side. See FrameHostMsg_DidCommitProvisionalLoad_Params. It is a grab 491 // other side. See FrameHostMsg_DidCommitProvisionalLoad_Params. It is a grab
488 // bag of everything and it looks like a combination of 492 // bag of everything and it looks like a combination of
489 // NavigatorImpl::DidNavigate and 493 // NavigatorImpl::DidNavigate and
490 // NavigationControllerImpl::RendererDidNavigate use everything passed 494 // NavigationControllerImpl::RendererDidNavigate use everything passed
491 // through. 495 // through.
492 server_->DidCommitProvisionalLoad(); 496 server_->DidCommitProvisionalLoad();
497
498 if (!navigation_start_time_.is_null()) {
499 frame->dataSource()->setNavigationStartTime(
500 navigation_start_time_.ToInternalValue() /
501 static_cast<double>(base::Time::kMicrosecondsPerSecond));
502 navigation_start_time_ = base::TimeTicks();
503 }
493 } 504 }
494 505
495 void HTMLFrame::didReceiveTitle(blink::WebLocalFrame* frame, 506 void HTMLFrame::didReceiveTitle(blink::WebLocalFrame* frame,
496 const blink::WebString& title, 507 const blink::WebString& title,
497 blink::WebTextDirection direction) { 508 blink::WebTextDirection direction) {
498 // TODO(beng): handle |direction|. 509 // TODO(beng): handle |direction|.
499 mojo::String formatted; 510 mojo::String formatted;
500 if (!title.isNull()) { 511 if (!title.isNull()) {
501 formatted = 512 formatted =
502 mojo::String::From(base::string16(title).substr(0, kMaxTitleChars)); 513 mojo::String::From(base::string16(title).substr(0, kMaxTitleChars));
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 void HTMLFrame::OnViewFocusChanged(mus::View* gained_focus, 785 void HTMLFrame::OnViewFocusChanged(mus::View* gained_focus,
775 mus::View* lost_focus) { 786 mus::View* lost_focus) {
776 UpdateFocus(); 787 UpdateFocus();
777 } 788 }
778 789
779 void HTMLFrame::OnConnect(web_view::mojom::FramePtr frame, 790 void HTMLFrame::OnConnect(web_view::mojom::FramePtr frame,
780 uint32_t change_id, 791 uint32_t change_id,
781 uint32_t view_id, 792 uint32_t view_id,
782 web_view::mojom::ViewConnectType view_connect_type, 793 web_view::mojom::ViewConnectType view_connect_type,
783 mojo::Array<web_view::mojom::FrameDataPtr> frame_data, 794 mojo::Array<web_view::mojom::FrameDataPtr> frame_data,
795 int64_t navigation_start_time_ticks,
784 const OnConnectCallback& callback) { 796 const OnConnectCallback& callback) {
785 // This is called if this frame is created by way of OnCreatedFrame(). 797 // This is called if this frame is created by way of OnCreatedFrame().
786 callback.Run(); 798 callback.Run();
787 } 799 }
788 800
789 void HTMLFrame::OnFrameAdded(uint32_t change_id, 801 void HTMLFrame::OnFrameAdded(uint32_t change_id,
790 web_view::mojom::FrameDataPtr frame_data) { 802 web_view::mojom::FrameDataPtr frame_data) {
791 frame_tree_manager_->ProcessOnFrameAdded(this, change_id, frame_data.Pass()); 803 frame_tree_manager_->ProcessOnFrameAdded(this, change_id, frame_data.Pass());
792 } 804 }
793 805
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 if (!surface_layer_) 1022 if (!surface_layer_)
1011 return; 1023 return;
1012 1024
1013 surface_layer_->SetSurfaceId( 1025 surface_layer_->SetSurfaceId(
1014 cc::SurfaceId(owned_view_->view()->id()), 1026 cc::SurfaceId(owned_view_->view()->id()),
1015 global_state()->device_pixel_ratio(), 1027 global_state()->device_pixel_ratio(),
1016 owned_view_->view()->bounds().To<gfx::Rect>().size()); 1028 owned_view_->view()->bounds().To<gfx::Rect>().size());
1017 } 1029 }
1018 1030
1019 } // namespace mojo 1031 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698