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_ |