Chromium Code Reviews| Index: components/autofill/core/browser/legal_message_line.h |
| diff --git a/components/autofill/core/browser/legal_message_line.h b/components/autofill/core/browser/legal_message_line.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..16fbd89619a86d47de0fdb14d755a5f75d59b979 |
| --- /dev/null |
| +++ b/components/autofill/core/browser/legal_message_line.h |
| @@ -0,0 +1,82 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_LEGAL_MESSAGE_LINE_H_ |
| +#define COMPONENTS_AUTOFILL_CORE_BROWSER_LEGAL_MESSAGE_LINE_H_ |
| + |
| +#include <vector> |
| + |
| +#include "base/gtest_prod_util.h" |
| +#include "base/macros.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "base/strings/string16.h" |
| +#include "ui/gfx/range/range.h" |
| +#include "url/gurl.h" |
| + |
| +namespace base { |
| +class DictionaryValue; |
| +} |
| + |
| +namespace autofill { |
| + |
| +class LegalMessageLine; |
| + |
| +using LegalMessageLines = std::vector<LegalMessageLine>; |
| + |
| +class LegalMessageLine { |
| + public: |
| + struct Link { |
| + gfx::Range range; |
| + GURL url; |
| + }; |
| + |
| + // Parses |legal_message|. Returns false on failure. |
| + // |
| + // Example of valid |legal_message| data: |
| + // { |
| + // "line" : [ { |
| + // "template" : "The legal documents are: {0} and {1}", |
| + // "template_parameter" : [ { |
| + // "display_text" : "Terms of Service", |
| + // "url": "http://www.example.com/tos" |
| + // }, { |
| + // "display_text" : "Privacy Policy", |
| + // "url": "http://www.example.com/pp" |
| + // } ], |
| + // }, { |
| + // "template" : "This is the second line and it has no parameters" |
| + // } ] |
| + // } |
| + // |
| + // Caveats: |
| + // 1. '{' and '}' may be displayed by escaping them with an apostrophe in the |
| + // template string, e.g. "template" : "Here is a literal '{'" |
|
Peter Kasting
2016/01/14 04:19:25
Nit: I think if you remove the quoted word "templa
please use gerrit instead
2016/01/14 17:51:57
Done.
|
| + // 2. Two or more consecutive dollar signs in the template string will not |
| + // expand correctly. |
| + // 3. "${" anywhere in the template string is invalid. |
| + // 4. "\n" embedded anywhere in the template string, or an empty template |
| + // string, can be used to separate paragraphs. It is not possible to create |
| + // a completely blank line by using two consecutive newlines (they will be |
| + // treated as a single newline by views::StyledLabel). |
| + static bool Parse(const base::DictionaryValue& legal_message, |
| + LegalMessageLines* out); |
|
Peter Kasting
2016/01/14 04:19:25
Nit: Per the style guide, static methods go below
please use gerrit instead
2016/01/14 17:51:57
Done.
|
| + |
| + LegalMessageLine(); |
| + virtual ~LegalMessageLine(); // Overridden in TestLegalMessageLine. |
| + |
| + const base::string16& text() const { return text_; } |
| + const std::vector<Link>& links() const { return links_; } |
| + |
| + private: |
| + friend class TestLegalMessageLine; |
| + |
| + bool ParseLine(const base::DictionaryValue& line); |
| + |
| + base::string16 text_; |
| + std::vector<Link> links_; |
| +}; |
| + |
| +} // namespace autofill |
| + |
| +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_LEGAL_MESSAGE_LINE_H_ |