• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include <string>
6 
7 #include "base/json/json_reader.h"
8 #include "base/values.h"
9 #include "chrome/test/chromedriver/chrome/frame_tracker.h"
10 #include "chrome/test/chromedriver/chrome/status.h"
11 #include "chrome/test/chromedriver/chrome/stub_devtools_client.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 
TEST(FrameTracker,GetContextIdForFrame)14 TEST(FrameTracker, GetContextIdForFrame) {
15   StubDevToolsClient client;
16   FrameTracker tracker(&client);
17   int context_id = -1;
18   ASSERT_TRUE(tracker.GetContextIdForFrame("f", &context_id).IsError());
19   ASSERT_EQ(-1, context_id);
20 
21   const char context[] = "{\"id\":100,\"frameId\":\"f\"}";
22   base::DictionaryValue params;
23   params.Set("context", base::JSONReader::Read(context));
24   ASSERT_EQ(kOk,
25             tracker.OnEvent(&client, "Runtime.executionContextCreated", params)
26                 .code());
27   ASSERT_EQ(kNoSuchExecutionContext,
28             tracker.GetContextIdForFrame("foo", &context_id).code());
29   ASSERT_EQ(-1, context_id);
30   ASSERT_TRUE(tracker.GetContextIdForFrame("f", &context_id).IsOk());
31   ASSERT_EQ(100, context_id);
32 
33   base::DictionaryValue nav_params;
34   nav_params.SetString("frame.parentId", "1");
35   ASSERT_EQ(kOk,
36             tracker.OnEvent(&client, "Page.frameNavigated", nav_params).code());
37   ASSERT_TRUE(tracker.GetContextIdForFrame("f", &context_id).IsOk());
38   nav_params.Clear();
39   ASSERT_EQ(kOk,
40             tracker.OnEvent(&client, "Page.frameNavigated", nav_params).code());
41   ASSERT_EQ(kNoSuchExecutionContext,
42             tracker.GetContextIdForFrame("f", &context_id).code());
43 }
44 
TEST(FrameTracker,CanUpdateFrameContextId)45 TEST(FrameTracker, CanUpdateFrameContextId) {
46   StubDevToolsClient client;
47   FrameTracker tracker(&client);
48 
49   const char context[] = "{\"id\":1,\"frameId\":\"f\"}";
50   base::DictionaryValue params;
51   params.Set("context", base::JSONReader::Read(context));
52   ASSERT_EQ(kOk,
53             tracker.OnEvent(&client, "Runtime.executionContextCreated", params)
54                 .code());
55   int context_id = -1;
56   ASSERT_TRUE(tracker.GetContextIdForFrame("f", &context_id).IsOk());
57   ASSERT_EQ(1, context_id);
58 
59   params.SetInteger("context.id", 2);
60   ASSERT_EQ(kOk,
61             tracker.OnEvent(&client, "Runtime.executionContextCreated", params)
62                 .code());
63   ASSERT_TRUE(tracker.GetContextIdForFrame("f", &context_id).IsOk());
64   ASSERT_EQ(2, context_id);
65 }
66