Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1769)

Unified Diff: components/subresource_filter/core/common/test_ruleset_creator.h

Issue 2182493009: Framework for indexing of subresource filtering rules. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Attempt #2 to fix tests on Windows. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/subresource_filter/core/common/test_ruleset_creator.h
diff --git a/components/subresource_filter/core/common/test_ruleset_creator.h b/components/subresource_filter/core/common/test_ruleset_creator.h
index 6bc69de9a366341bff68a696fa7b54d0b24a5f3f..bb8851cee72ff34e5a54d01a3e795dadfe951919 100644
--- a/components/subresource_filter/core/common/test_ruleset_creator.h
+++ b/components/subresource_filter/core/common/test_ruleset_creator.h
@@ -10,6 +10,7 @@
#include <vector>
#include "base/files/file.h"
+#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/macros.h"
#include "base/strings/string_piece.h"
@@ -17,36 +18,55 @@
namespace subresource_filter {
namespace testing {
+// Encapsulates a testing subresource filtering ruleset serialized either in
+// indexed or unindexed format. The ruleset |contents| can be accessed directly
+// as a byte buffer, as well as through the file |path| pointing to a temporary
+// file that is cleaned up when the TestRulesetCreator is destroyed.
+struct TestRuleset {
+ TestRuleset();
+ ~TestRuleset();
+
+ // Convenience function to open a read-only file handle to |ruleset|.
+ static base::File Open(const TestRuleset& ruleset);
+
+ std::vector<uint8_t> contents;
+ base::FilePath path;
+};
+
+// Encapsulates the same ruleset in both indexed and unindexed formats.
+struct TestRulesetPair {
+ TestRulesetPair();
+ ~TestRulesetPair();
+
+ TestRuleset unindexed;
+ TestRuleset indexed;
+};
+
// Helper class to create subresource filtering rulesets for testing.
+//
+// All temporary files corresponding to TestRulesets are cleaned up when the
+// instance goes out of scope, but file handles already open can still be used
+// and read even after this.
class TestRulesetCreator {
public:
TestRulesetCreator();
~TestRulesetCreator();
- // Creates a testing ruleset to disallow subresource loads from URL paths
- // having the given |suffix|, and replaces the |buffer| with the ruleset data.
- //
- // Enclose the call to this method in ASSERT_NO_FATAL_FAILURE to detect
- // errors.
- static void CreateRulesetToDisallowURLsWithPathSuffix(
+ // Creates a testing ruleset comprised of a single filtering rule that
+ // disallows subresource loads from URL paths having the given |suffix|.
+ // Enclose call in ASSERT_NO_FATAL_FAILURE to detect errors.
+ void CreateRulesetToDisallowURLsWithPathSuffix(
base::StringPiece suffix,
- std::vector<uint8_t>* buffer);
-
- // Same as above, but puts the ruleset into a file and returns its read-only
- // file handle in |ruleset_file|.
- //
- // The underlying temporary file will be deleted when the TestRulesetCreator
- // instance goes out of scope, but the |ruleset_file| handle may outlive and
- // can still be used even after the destruction.
- //
- // Enclose the call to this method in ASSERT_NO_FATAL_FAILURE to detect
- // errors.
- void CreateRulesetFileToDisallowURLsWithPathSuffix(base::StringPiece suffix,
- base::File* ruleset_file);
+ TestRulesetPair* test_ruleset_pair);
private:
+ // Writes the |ruleset_contents| to a temporary file, and initializes
+ // |ruleset| to have the same |contents|, and the |path| to this file.
+ void CreateTestRulesetFromContents(std::vector<uint8_t> ruleset_contents,
+ TestRuleset* ruleset);
+
base::ScopedTempDir scoped_temp_dir_;
- int next_ruleset_version_ = 1;
+ int next_unique_file_suffix = 1;
DISALLOW_COPY_AND_ASSIGN(TestRulesetCreator);
};

Powered by Google App Engine
This is Rietveld 408576698