Home | History | Annotate | Download | only in browser
      1 // Copyright 2013 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 #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PSL_MATCHING_HELPER_H_
      6 #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PSL_MATCHING_HELPER_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 
     12 class GURL;
     13 
     14 namespace autofill {
     15 struct PasswordForm;
     16 }  // namespace autofill
     17 
     18 namespace password_manager {
     19 
     20 // Enum used for histogram tracking PSL Domain triggering.
     21 // New entries should only be added to the end of the enum (before *_COUNT) so
     22 // as to not disrupt existing data.
     23 enum PSLDomainMatchMetric {
     24   PSL_DOMAIN_MATCH_NOT_USED = 0,
     25   PSL_DOMAIN_MATCH_NONE,
     26   PSL_DOMAIN_MATCH_FOUND,
     27   PSL_DOMAIN_MATCH_COUNT
     28 };
     29 
     30 // Using the public suffix list for matching the origin is only needed for
     31 // websites that do not have a single hostname for entering credentials. It
     32 // would be better for their users if they did, but until then we help them find
     33 // credentials across different hostnames. We know that accounts.google.com is
     34 // the only hostname we should be accepting credentials on for any domain under
     35 // google.com, so we can apply a tighter policy for that domain. For owners of
     36 // domains where a single hostname is always used when your users are entering
     37 // their credentials, please contact palmer (at) chromium.org, nyquist (at) chromium.org
     38 // or file a bug at http://crbug.com/ to be added here.
     39 bool ShouldPSLDomainMatchingApply(
     40     const std::string& registry_controlled_domain);
     41 
     42 // Two URLs are considered a Public Suffix Domain match if they have the same
     43 // scheme, ports, and their registry controlled domains are equal. If one or
     44 // both arguments do not describe valid URLs, returns false.
     45 bool IsPublicSuffixDomainMatch(const std::string& url1,
     46                                const std::string& url2);
     47 
     48 // Two hosts are considered to belong to the same website when they share the
     49 // registry-controlled domain part.
     50 std::string GetRegistryControlledDomain(const GURL& signon_realm);
     51 
     52 }  // namespace password_manager
     53 
     54 #endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PSL_MATCHING_HELPER_H_
     55