1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file. 4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/password_manager/core/browser/psl_matching_helper.h" 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/command_line.h" 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/logging.h" 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/autofill/core/common/password_form.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/password_manager/core/common/password_manager_switches.h" 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "net/base/registry_controlled_domains/registry_controlled_domain.h" 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "url/gurl.h" 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)using autofill::PasswordForm; 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace password_manager { 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool ShouldPSLDomainMatchingApply( 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& registry_controlled_domain) { 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return registry_controlled_domain != "google.com"; 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool IsPublicSuffixDomainMatch(const std::string& url1, 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& url2) { 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) GURL gurl1(url1); 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) GURL gurl2(url2); 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (!gurl1.is_valid() || !gurl2.is_valid()) 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return false; 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return gurl1.scheme() == gurl2.scheme() && 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) GetRegistryControlledDomain(gurl1) == 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) GetRegistryControlledDomain(gurl2) && 35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) gurl1.port() == gurl2.port(); 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistd::string GetRegistryControlledDomain(const GURL& signon_realm) { 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return net::registry_controlled_domains::GetDomainAndRegistry( 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) signon_realm, 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); 42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace password_manager 45