168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// found in the LICENSE file.
468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "base/time/time.h"
668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/browser/extensions/activity_log/activity_action_constants.h"
768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/browser/extensions/activity_log/uma_policy.h"
868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/test/base/testing_profile.h"
95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "extensions/common/dom_action_types.h"
1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace extensions {
1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class UmaPolicyTest : public testing::Test {
1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public:
1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  UmaPolicyTest() {
1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)    profile_.reset(new TestingProfile());
1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  }
1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) protected:
2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  scoped_ptr<TestingProfile> profile_;
2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)};
2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)TEST_F(UmaPolicyTest, Construct) {
2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ActivityLogPolicy* policy = new UmaPolicy(profile_.get());
2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->Close();
2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)TEST_F(UmaPolicyTest, MatchActionToStatusTest) {
3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  UmaPolicy* policy = new UmaPolicy(profile_.get());
3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  scoped_refptr<Action> action = new Action(
3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      "id", base::Time::Now(), Action::ACTION_API_CALL, "extension.connect");
3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(UmaPolicy::NONE, policy->MatchActionToStatus(action));
3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action = new Action(
3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      "id", base::Time::Now(), Action::ACTION_API_CALL, "tabs.executeScript");
3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(
3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::CONTENT_SCRIPT), policy->MatchActionToStatus(action));
4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action = new Action(
4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      "id", base::Time::Now(), Action::ACTION_CONTENT_SCRIPT, "");
4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::CONTENT_SCRIPT) & policy->MatchActionToStatus(action));
4568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(
4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::CONTENT_SCRIPT), policy->MatchActionToStatus(action));
4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action = new Action(
4968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      "id", base::Time::Now(), Action::ACTION_DOM_ACCESS, "Document.location");
5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb,
5168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                                      DomActionType::GETTER);
5268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE((1 << UmaPolicy::READ_DOM) & policy->MatchActionToStatus(action));
5368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ((1 << UmaPolicy::READ_DOM), policy->MatchActionToStatus(action));
5468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
5568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb,
5668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                                      DomActionType::SETTER);
5768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
5868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::MODIFIED_DOM) & policy->MatchActionToStatus(action));
5968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(
6068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::MODIFIED_DOM), policy->MatchActionToStatus(action));
6168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
6268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action = new Action(
6368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      "id", base::Time::Now(), Action::ACTION_DOM_ACCESS, "HTMLDocument.write");
6468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb,
6568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                                      DomActionType::METHOD);
6668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
6768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::DOCUMENT_WRITE) & policy->MatchActionToStatus(action));
6868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
6968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::DOM_METHOD) & policy->MatchActionToStatus(action));
7068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
7168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action = new Action("id",
7268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                      base::Time::Now(),
7368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                      Action::ACTION_DOM_ACCESS,
7468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                      "Document.createElement");
7568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  scoped_ptr<base::ListValue> args(new base::ListValue());
7668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  args->Set(0, new base::StringValue("script"));
7768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action->set_args(args.Pass());
7868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(UmaPolicy::NONE, policy->MatchActionToStatus(action));
7968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb,
8068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                                      DomActionType::METHOD);
8168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
8268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::CREATED_SCRIPT) & policy->MatchActionToStatus(action));
8368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
8468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::DOM_METHOD) & policy->MatchActionToStatus(action));
8568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
8668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->Close();
8768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
8868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
8968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)TEST_F(UmaPolicyTest, SiteUrlTest) {
9068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  UmaPolicy* policy = new UmaPolicy(profile_.get());
9168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  const std::string site0 = "http://www.zzz.com/";
93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  const std::string site1 = "http://www.foo.com/";
9468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  const std::string site2 = "http://www.google.com#a";
9568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  const std::string site3 = "http://www.google.com#bb";
9668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
9768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Record some opened sites.
9868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->SetupOpenedPage(site1);
9968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->SetupOpenedPage(site2);
10068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->SetupOpenedPage(site2);
10168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->SetupOpenedPage(site3);
10268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->SetupOpenedPage(site3);
10368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->SetupOpenedPage(site3);
10468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
10568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Check that site1, site2, and site3 were recorded.
10668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(3u, policy->url_status().size());
10768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(1, policy->url_status()[site1][UmaPolicy::kNumberOfTabs]);
10868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(2, policy->url_status()[site2][UmaPolicy::kNumberOfTabs]);
10968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(3, policy->url_status()[site3][UmaPolicy::kNumberOfTabs]);
11068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
11168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Remove some sites.
112cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  policy->CleanupClosedPage(site0, NULL);
113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  policy->CleanupClosedPage(site2, NULL);
114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  policy->CleanupClosedPage(site2, NULL);
115cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  policy->CleanupClosedPage(site3, NULL);
11668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
11768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Check that the removal worked.
11868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(2u, policy->url_status().size());
11968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(1, policy->url_status()[site1][UmaPolicy::kNumberOfTabs]);
12068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(2, policy->url_status()[site3][UmaPolicy::kNumberOfTabs]);
12168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
12268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->Close();
12368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
12468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
12568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)TEST_F(UmaPolicyTest, ProcessActionTest) {
12668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  const std::string site_a = "http://www.zzz.com/";
12768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  const std::string site_b = "http://www.foo.com/";
12868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  const std::string ext_a = "a";
12968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  const std::string ext_b = "b";
13068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  UmaPolicy* policy = new UmaPolicy(profile_.get());
13168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
13268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Populate with a few different pages.
13368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->SetupOpenedPage(site_a);
13468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->SetupOpenedPage(site_b);
13568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
13668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Process a few actions for site_a.
13768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  scoped_refptr<Action> action1 = new Action(
13868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      ext_a, base::Time::Now(), Action::ACTION_CONTENT_SCRIPT, "");
13968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action1->set_page_url(GURL(site_a));
14068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->ProcessAction(action1);
14168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
14268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  scoped_refptr<Action> action2 = new Action(
14368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      ext_a, base::Time::Now(), Action::ACTION_CONTENT_SCRIPT, "");
14468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action2->set_page_url(GURL(site_a));
14568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->ProcessAction(action2);
14668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
14768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  scoped_refptr<Action> action3 = new Action(
14868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      ext_b, base::Time::Now(), Action::ACTION_DOM_ACCESS, "Document.location");
14968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action3->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb,
15068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                                       DomActionType::GETTER);
15168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action3->set_page_url(GURL(site_a));
15268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->ProcessAction(action3);
15368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
15468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Process an action for site_b.
15568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  scoped_refptr<Action> action4 = new Action(
15668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      ext_a, base::Time::Now(), Action::ACTION_DOM_ACCESS, "Document.location");
15768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action4->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb,
15868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                                       DomActionType::SETTER);
15968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action4->set_page_url(GURL(site_b));
16068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->ProcessAction(action4);
16168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
16268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  scoped_refptr<Action> action5 = new Action(
16368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      ext_b, base::Time::Now(), Action::ACTION_DOM_ACCESS, "Document.location");
16468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action5->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb,
16568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                                       DomActionType::SETTER);
16668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action5->set_page_url(GURL(site_b));
16768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->ProcessAction(action5);
16868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
16968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  scoped_refptr<Action> action6 = new Action(
17068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      ext_b, base::Time::Now(), Action::ACTION_API_CALL, "tabs.executeScript");
17168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  action6->set_arg_url(GURL(site_b));
17268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->ProcessAction(action6);
17368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
17468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Now check what's been recorded.
17568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(2u, policy->url_status().size());
17668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
17768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(3u, policy->url_status()[site_a].size());
17868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
17968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::CONTENT_SCRIPT) & policy->url_status()[site_a][ext_a]);
18068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_FALSE(
18168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::CONTENT_SCRIPT) & policy->url_status()[site_a][ext_b]);
18268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE((1 << UmaPolicy::READ_DOM) & policy->url_status()[site_a][ext_b]);
18368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_FALSE(
18468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::READ_DOM) & policy->url_status()[site_a][ext_a]);
18568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
18668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ(3u, policy->url_status()[site_b].size());
18768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
18868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::MODIFIED_DOM) & policy->url_status()[site_b][ext_a]);
18968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
19068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::MODIFIED_DOM) & policy->url_status()[site_b][ext_b]);
19168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_TRUE(
19268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      (1 << UmaPolicy::CONTENT_SCRIPT) & policy->url_status()[site_b][ext_b]);
19368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
19468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  policy->Close();
19568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
19668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
19768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)TEST_F(UmaPolicyTest, CleanURLTest) {
19868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.google.com/",
19968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.google.com/")));
20068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.google.com/",
20168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.google.com")));
20268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.google.com:8080/a.html",
20368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.google.com:8080/a.html")));
20468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.google.com/",
20568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.google.com/#a")));
20668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.google.com/",
20768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.google.com/#aaaa")));
20868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.google.com/?q=a",
20968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.google.com/?q=a")));
21068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
21168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.cnn.com/",
21268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.cnn.com/")));
21368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.cnn.com:8080/a.html",
21468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.cnn.com:8080/a.html")));
21568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.cnn.com/",
21668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.cnn.com")));
21768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.cnn.com/",
21868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.cnn.com/#a")));
21968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.cnn.com/",
22068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.cnn.com/#aaaa")));
22168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ASSERT_EQ("http://www.cnn.com/?q=a",
22268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)            UmaPolicy::CleanURL(GURL("http://www.cnn.com/?q=a")));
22368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
22468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
22568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}  // namespace extensions
226