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

Side by Side Diff: content/public/browser/session_storage_namespace.h

Issue 757723002: [Tests not passing yet] Remove prerender sessionStorage namespace merging. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_PUBLIC_BROWSER_SESSION_STORAGE_NAMESPACE_H_ 5 #ifndef CONTENT_PUBLIC_BROWSER_SESSION_STORAGE_NAMESPACE_H_
6 #define CONTENT_PUBLIC_BROWSER_SESSION_STORAGE_NAMESPACE_H_ 6 #define CONTENT_PUBLIC_BROWSER_SESSION_STORAGE_NAMESPACE_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/callback.h"
13 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
14 13
15 namespace content { 14 namespace content {
16 15
17 // This is a ref-counted class that represents a SessionStorageNamespace. 16 // This is a ref-counted class that represents a SessionStorageNamespace.
18 // On destruction it ensures that the storage namespace is destroyed. 17 // On destruction it ensures that the storage namespace is destroyed.
19 class SessionStorageNamespace 18 class SessionStorageNamespace
20 : public base::RefCountedThreadSafe<SessionStorageNamespace> { 19 : public base::RefCountedThreadSafe<SessionStorageNamespace> {
21 public: 20 public:
22 // Returns the ID of the |SessionStorageNamespace|. The ID is unique among all 21 // Returns the ID of the |SessionStorageNamespace|. The ID is unique among all
23 // SessionStorageNamespace objects, but not unique across browser runs. 22 // SessionStorageNamespace objects, but not unique across browser runs.
24 virtual int64 id() const = 0; 23 virtual int64 id() const = 0;
25 24
26 // Returns the persistent ID for the |SessionStorageNamespace|. The ID is 25 // Returns the persistent ID for the |SessionStorageNamespace|. The ID is
27 // unique across browser runs. 26 // unique across browser runs.
28 virtual const std::string& persistent_id() const = 0; 27 virtual const std::string& persistent_id() const = 0;
29 28
30 // For marking that the sessionStorage will be needed or won't be needed by 29 // For marking that the sessionStorage will be needed or won't be needed by
31 // session restore. 30 // session restore.
32 virtual void SetShouldPersist(bool should_persist) = 0; 31 virtual void SetShouldPersist(bool should_persist) = 0;
33 32
34 virtual bool should_persist() const = 0; 33 virtual bool should_persist() const = 0;
35 34
36 // SessionStorageNamespaces can be merged. These merges happen based on
37 // a transaction log of operations on the session storage namespace since
38 // this function has been called. Transaction logging will be restricted
39 // to the processes indicated.
40 virtual void AddTransactionLogProcessId(int process_id) = 0;
41
42 // When transaction logging for a process is no longer required, the log
43 // can be removed to save space.
44 virtual void RemoveTransactionLogProcessId(int process_id) = 0;
45
46 // Creates a new session storage namespace which is an alias of the current
47 // instance.
48 virtual SessionStorageNamespace* CreateAlias() = 0;
49
50 enum MergeResult {
51 MERGE_RESULT_NAMESPACE_NOT_FOUND,
52 MERGE_RESULT_NAMESPACE_NOT_ALIAS,
53 MERGE_RESULT_NOT_LOGGING,
54 MERGE_RESULT_NO_TRANSACTIONS,
55 MERGE_RESULT_TOO_MANY_TRANSACTIONS,
56 MERGE_RESULT_NOT_MERGEABLE,
57 MERGE_RESULT_MERGEABLE,
58 MERGE_RESULT_MAX_VALUE
59 };
60
61 typedef base::Callback<void(MergeResult)> MergeResultCallback;
62
63 // Determines whether the transaction log for the process specified can
64 // be merged into the other session storage namespace supplied.
65 // If actually_merge is set to true, the merge will actually be performed,
66 // if possible, and the result of the merge will be returned.
67 // If actually_merge is set to false, the result of whether a merge would be
68 // possible is returned.
69 virtual void Merge(bool actually_merge,
70 int process_id,
71 SessionStorageNamespace* other,
72 const MergeResultCallback& callback) = 0;
73
74 // Indicates whether this SessionStorageNamespace is an alias of |other|,
75 // i.e. whether they point to the same underlying data.
76 virtual bool IsAliasOf(SessionStorageNamespace* other) = 0;
77
78 protected: 35 protected:
79 friend class base::RefCountedThreadSafe<SessionStorageNamespace>; 36 friend class base::RefCountedThreadSafe<SessionStorageNamespace>;
80 virtual ~SessionStorageNamespace() {} 37 virtual ~SessionStorageNamespace() {}
81 }; 38 };
82 39
83 // Used to store mappings of StoragePartition id to SessionStorageNamespace. 40 // Used to store mappings of StoragePartition id to SessionStorageNamespace.
84 typedef std::map<std::string, scoped_refptr<SessionStorageNamespace> > 41 typedef std::map<std::string, scoped_refptr<SessionStorageNamespace> >
85 SessionStorageNamespaceMap; 42 SessionStorageNamespaceMap;
86 43
87 } // namespace content 44 } // namespace content
88 45
89 #endif // CONTENT_PUBLIC_BROWSER_SESSION_STORAGE_NAMESPACE_H_ 46 #endif // CONTENT_PUBLIC_BROWSER_SESSION_STORAGE_NAMESPACE_H_
OLDNEW
« no previous file with comments | « content/common/dom_storage/dom_storage_messages.h ('k') | content/renderer/dom_storage/dom_storage_cached_area.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698