| Index: chrome/browser/extensions/api/web_navigation/frame_navigation_state_unittest.cc
|
| diff --git a/chrome/browser/extensions/api/web_navigation/frame_navigation_state_unittest.cc b/chrome/browser/extensions/api/web_navigation/frame_navigation_state_unittest.cc
|
| index 8e1f8cbd85de4cbe6420d21ddecf8a6249e45923..5a998063d056d0664ba283ec1162c99496d0d900 100644
|
| --- a/chrome/browser/extensions/api/web_navigation/frame_navigation_state_unittest.cc
|
| +++ b/chrome/browser/extensions/api/web_navigation/frame_navigation_state_unittest.cc
|
| @@ -16,6 +16,7 @@ content::RenderViewHost* fake_rvh =
|
| // goes away.
|
| TEST(FrameNavigationStateTest, TrackFrame) {
|
| FrameNavigationState navigation_state;
|
| + const FrameNavigationState::FrameID frame_id0(-1, fake_rvh);
|
| const FrameNavigationState::FrameID frame_id1(23, fake_rvh);
|
| const FrameNavigationState::FrameID frame_id2(42, fake_rvh);
|
| const GURL url1("http://www.google.com/");
|
| @@ -24,7 +25,7 @@ TEST(FrameNavigationStateTest, TrackFrame) {
|
| // Create a main frame.
|
| EXPECT_FALSE(navigation_state.CanSendEvents(frame_id1));
|
| EXPECT_FALSE(navigation_state.IsValidFrame(frame_id1));
|
| - navigation_state.TrackFrame(frame_id1, url1, true, false);
|
| + navigation_state.TrackFrame(frame_id1, frame_id0, url1, true, false);
|
| navigation_state.SetNavigationCommitted(frame_id1);
|
| EXPECT_TRUE(navigation_state.CanSendEvents(frame_id1));
|
| EXPECT_TRUE(navigation_state.IsValidFrame(frame_id1));
|
| @@ -32,7 +33,7 @@ TEST(FrameNavigationStateTest, TrackFrame) {
|
| // Add a sub frame.
|
| EXPECT_FALSE(navigation_state.CanSendEvents(frame_id2));
|
| EXPECT_FALSE(navigation_state.IsValidFrame(frame_id2));
|
| - navigation_state.TrackFrame(frame_id2, url2, false, false);
|
| + navigation_state.TrackFrame(frame_id2, frame_id1, url2, false, false);
|
| navigation_state.SetNavigationCommitted(frame_id2);
|
| EXPECT_TRUE(navigation_state.CanSendEvents(frame_id2));
|
| EXPECT_TRUE(navigation_state.IsValidFrame(frame_id2));
|
| @@ -57,39 +58,41 @@ TEST(FrameNavigationStateTest, TrackFrame) {
|
| // before a new navigation happened in this frame.
|
| TEST(FrameNavigationStateTest, ErrorState) {
|
| FrameNavigationState navigation_state;
|
| - const FrameNavigationState::FrameID frame_id(42, fake_rvh);
|
| + const FrameNavigationState::FrameID frame_id0(-1, fake_rvh);
|
| + const FrameNavigationState::FrameID frame_id1(42, fake_rvh);
|
| const GURL url("http://www.google.com/");
|
|
|
| - navigation_state.TrackFrame(frame_id, url, true, false);
|
| - EXPECT_TRUE(navigation_state.CanSendEvents(frame_id));
|
| - EXPECT_FALSE(navigation_state.GetErrorOccurredInFrame(frame_id));
|
| + navigation_state.TrackFrame(frame_id1, frame_id0, url, true, false);
|
| + EXPECT_TRUE(navigation_state.CanSendEvents(frame_id1));
|
| + EXPECT_FALSE(navigation_state.GetErrorOccurredInFrame(frame_id1));
|
|
|
| // After an error occurred, no further events should be sent.
|
| - navigation_state.SetErrorOccurredInFrame(frame_id);
|
| - EXPECT_FALSE(navigation_state.CanSendEvents(frame_id));
|
| - EXPECT_TRUE(navigation_state.GetErrorOccurredInFrame(frame_id));
|
| + navigation_state.SetErrorOccurredInFrame(frame_id1);
|
| + EXPECT_FALSE(navigation_state.CanSendEvents(frame_id1));
|
| + EXPECT_TRUE(navigation_state.GetErrorOccurredInFrame(frame_id1));
|
|
|
| // Navigations to a network error page should be ignored.
|
| - navigation_state.TrackFrame(frame_id, GURL(), true, true);
|
| - EXPECT_FALSE(navigation_state.CanSendEvents(frame_id));
|
| - EXPECT_TRUE(navigation_state.GetErrorOccurredInFrame(frame_id));
|
| + navigation_state.TrackFrame(frame_id1, frame_id0, GURL(), true, true);
|
| + EXPECT_FALSE(navigation_state.CanSendEvents(frame_id1));
|
| + EXPECT_TRUE(navigation_state.GetErrorOccurredInFrame(frame_id1));
|
|
|
| // However, when the frame navigates again, it should send events again.
|
| - navigation_state.TrackFrame(frame_id, url, true, false);
|
| - EXPECT_TRUE(navigation_state.CanSendEvents(frame_id));
|
| - EXPECT_FALSE(navigation_state.GetErrorOccurredInFrame(frame_id));
|
| + navigation_state.TrackFrame(frame_id1, frame_id0, url, true, false);
|
| + EXPECT_TRUE(navigation_state.CanSendEvents(frame_id1));
|
| + EXPECT_FALSE(navigation_state.GetErrorOccurredInFrame(frame_id1));
|
| }
|
|
|
| // Tests that for a sub frame, no events are send after an error occurred, but
|
| // before a new navigation happened in this frame.
|
| TEST(FrameNavigationStateTest, ErrorStateFrame) {
|
| FrameNavigationState navigation_state;
|
| + const FrameNavigationState::FrameID frame_id0(-1, fake_rvh);
|
| const FrameNavigationState::FrameID frame_id1(23, fake_rvh);
|
| const FrameNavigationState::FrameID frame_id2(42, fake_rvh);
|
| const GURL url("http://www.google.com/");
|
|
|
| - navigation_state.TrackFrame(frame_id1, url, true, false);
|
| - navigation_state.TrackFrame(frame_id2, url, false, false);
|
| + navigation_state.TrackFrame(frame_id1, frame_id0, url, true, false);
|
| + navigation_state.TrackFrame(frame_id2, frame_id1, url, false, false);
|
| EXPECT_TRUE(navigation_state.CanSendEvents(frame_id1));
|
| EXPECT_TRUE(navigation_state.CanSendEvents(frame_id2));
|
|
|
| @@ -99,12 +102,12 @@ TEST(FrameNavigationStateTest, ErrorStateFrame) {
|
| EXPECT_FALSE(navigation_state.CanSendEvents(frame_id2));
|
|
|
| // Navigations to a network error page should be ignored.
|
| - navigation_state.TrackFrame(frame_id2, GURL(), false, true);
|
| + navigation_state.TrackFrame(frame_id2, frame_id1, GURL(), false, true);
|
| EXPECT_TRUE(navigation_state.CanSendEvents(frame_id1));
|
| EXPECT_FALSE(navigation_state.CanSendEvents(frame_id2));
|
|
|
| // However, when the frame navigates again, it should send events again.
|
| - navigation_state.TrackFrame(frame_id2, url, false, false);
|
| + navigation_state.TrackFrame(frame_id2, frame_id1, url, false, false);
|
| EXPECT_TRUE(navigation_state.CanSendEvents(frame_id1));
|
| EXPECT_TRUE(navigation_state.CanSendEvents(frame_id2));
|
| }
|
| @@ -112,11 +115,29 @@ TEST(FrameNavigationStateTest, ErrorStateFrame) {
|
| // Tests that no events are send for a not web-safe scheme.
|
| TEST(FrameNavigationStateTest, WebSafeScheme) {
|
| FrameNavigationState navigation_state;
|
| - const FrameNavigationState::FrameID frame_id(23, fake_rvh);
|
| + const FrameNavigationState::FrameID frame_id0(-1, fake_rvh);
|
| + const FrameNavigationState::FrameID frame_id1(23, fake_rvh);
|
| const GURL url("unsafe://www.google.com/");
|
|
|
| - navigation_state.TrackFrame(frame_id, url, true, false);
|
| - EXPECT_FALSE(navigation_state.CanSendEvents(frame_id));
|
| + navigation_state.TrackFrame(frame_id1, frame_id0, url, true, false);
|
| + EXPECT_FALSE(navigation_state.CanSendEvents(frame_id1));
|
| +}
|
| +
|
| +// Test that parent frame IDs are tracked.
|
| +TEST(FrameNavigationStateTest, ParentFrameID) {
|
| + FrameNavigationState navigation_state;
|
| + const FrameNavigationState::FrameID frame_id0(-1, fake_rvh);
|
| + const FrameNavigationState::FrameID frame_id1(23, fake_rvh);
|
| + const FrameNavigationState::FrameID frame_id2(42, fake_rvh);
|
| + const GURL url("http://www.google.com/");
|
| +
|
| + navigation_state.TrackFrame(frame_id1, frame_id0, url, true, false);
|
| + navigation_state.TrackFrame(frame_id2, frame_id1, url, false, false);
|
| + EXPECT_TRUE(navigation_state.CanSendEvents(frame_id1));
|
| + EXPECT_TRUE(navigation_state.CanSendEvents(frame_id2));
|
| +
|
| + EXPECT_TRUE(navigation_state.GetParentFrameID(frame_id1) == frame_id0);
|
| + EXPECT_TRUE(navigation_state.GetParentFrameID(frame_id2) == frame_id1);
|
| }
|
|
|
| } // namespace extensions
|
|
|