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

Unified Diff: components/web_view/frame_apptest.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/web_view/frame.cc ('k') | components/web_view/frame_tree.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/web_view/frame_apptest.cc
diff --git a/components/web_view/frame_apptest.cc b/components/web_view/frame_apptest.cc
index 603b0b6822d7b6f80a02cfa28615fea2b76847dc..629b0813cab8bec4961c18ffdb36af375fe54c67 100644
--- a/components/web_view/frame_apptest.cc
+++ b/components/web_view/frame_apptest.cc
@@ -10,6 +10,7 @@
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/test/test_timeouts.h"
+#include "base/time/time.h"
#include "components/mus/public/cpp/view_observer.h"
#include "components/mus/public/cpp/view_tree_connection.h"
#include "components/mus/public/cpp/view_tree_delegate.h"
@@ -124,12 +125,17 @@ class TestFrameClient : public mojom::FrameClient {
return last_dispatch_load_event_frame_id_;
}
+ base::TimeTicks last_navigation_start_time() const {
+ return last_navigation_start_time_;
+ }
+
// mojom::FrameClient:
void OnConnect(mojom::FramePtr frame,
uint32_t change_id,
uint32_t view_id,
mojom::ViewConnectType view_connect_type,
mojo::Array<mojom::FrameDataPtr> frames,
+ int64_t navigation_start_time_ticks,
const OnConnectCallback& callback) override {
connect_count_++;
connect_frames_ = frames.Pass();
@@ -138,6 +144,9 @@ class TestFrameClient : public mojom::FrameClient {
callback.Run();
if (!on_connect_callback_.is_null())
on_connect_callback_.Run();
+
+ last_navigation_start_time_ =
+ base::TimeTicks::FromInternalValue(navigation_start_time_ticks);
}
void OnFrameAdded(uint32_t change_id, mojom::FrameDataPtr frame) override {
adds_.push_back(frame.Pass());
@@ -196,6 +205,7 @@ class TestFrameClient : public mojom::FrameClient {
base::Closure on_dispatch_load_event_callback_;
LoadingStateChangedNotification last_loading_state_changed_notification_;
uint32_t last_dispatch_load_event_frame_id_;
+ base::TimeTicks last_navigation_start_time_;
DISALLOW_COPY_AND_ASSIGN(TestFrameClient);
};
@@ -292,15 +302,22 @@ class FrameTest : public mojo::test::ApplicationTestBase,
FrameTree* frame_tree() { return frame_tree_.get(); }
ViewAndFrame* root_view_and_frame() { return root_view_and_frame_.get(); }
- scoped_ptr<ViewAndFrame> NavigateFrame(ViewAndFrame* view_and_frame) {
+ scoped_ptr<ViewAndFrame> NavigateFrameWithStartTime(
+ ViewAndFrame* view_and_frame,
+ base::TimeTicks navigation_start_time) {
mojo::URLRequestPtr request(mojo::URLRequest::New());
request->url = mojo::String::From(application_impl()->url());
+ request->originating_time_ticks = navigation_start_time.ToInternalValue();
view_and_frame->server_frame()->RequestNavigate(
mojom::NAVIGATION_TARGET_TYPE_EXISTING_FRAME,
view_and_frame->view()->id(), request.Pass());
return WaitForViewAndFrame();
}
+ scoped_ptr<ViewAndFrame> NavigateFrame(ViewAndFrame* view_and_frame) {
+ return NavigateFrameWithStartTime(view_and_frame, base::TimeTicks());
+ }
+
// Creates a new shared frame as a child of |parent|.
scoped_ptr<ViewAndFrame> CreateChildViewAndFrame(ViewAndFrame* parent) {
mus::View* child_frame_view = parent->view()->connection()->CreateView();
@@ -366,10 +383,10 @@ class FrameTest : public mojo::test::ApplicationTestBase,
frame_connection->GetViewTreeClient();
mus::View* frame_root_view = window_manager()->CreateView();
window_manager()->GetRoot()->AddChild(frame_root_view);
- frame_tree_.reset(
- new FrameTree(0u, frame_root_view, view_tree_client.Pass(),
- frame_tree_delegate_.get(), frame_client,
- frame_connection.Pass(), Frame::ClientPropertyMap()));
+ frame_tree_.reset(new FrameTree(
+ 0u, frame_root_view, view_tree_client.Pass(),
+ frame_tree_delegate_.get(), frame_client, frame_connection.Pass(),
+ Frame::ClientPropertyMap(), base::TimeTicks::Now()));
root_view_and_frame_ = WaitForViewAndFrame();
}
@@ -535,4 +552,20 @@ TEST_F(FrameTest, NotifyRemoteParentWithLoadEvent) {
->last_dispatch_load_event_frame_id();
EXPECT_EQ(child_frame_id, frame_id);
}
+
+TEST_F(FrameTest, PassAlongNavigationStartTime) {
+ scoped_ptr<ViewAndFrame> child_view_and_frame(
+ CreateChildViewAndFrame(root_view_and_frame()));
+ ASSERT_TRUE(child_view_and_frame);
+
+ base::TimeTicks navigation_start_time = base::TimeTicks::FromInternalValue(1);
+ scoped_ptr<ViewAndFrame> navigated_child_view_and_frame =
+ NavigateFrameWithStartTime(child_view_and_frame.get(),
+ navigation_start_time)
+ .Pass();
+ EXPECT_EQ(navigation_start_time,
+ navigated_child_view_and_frame->test_frame_client()
+ ->last_navigation_start_time());
+}
+
} // namespace web_view
« no previous file with comments | « components/web_view/frame.cc ('k') | components/web_view/frame_tree.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698