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