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 |