Index: content/public/browser/resource_context.h |
diff --git a/content/public/browser/resource_context.h b/content/public/browser/resource_context.h |
index 022a338f8f34025581ce40a5084e9e94b85136b5..039ad94006ded4e49f25ad2a3784d3ed9d7e6b40 100644 |
--- a/content/public/browser/resource_context.h |
+++ b/content/public/browser/resource_context.h |
@@ -54,17 +54,29 @@ |
const base::Callback<void(std::unique_ptr<net::KeygenHandler>)>& |
callback); |
- // Returns a random salt string that is used for creating media device IDs. |
- // Returns a random string by default. |
- virtual std::string GetMediaDeviceIDSalt(); |
- |
- // Utility function useful for embedders. Only needs to be called if |
- // 1) The embedder needs to use a new salt, and |
- // 2) The embedder saves its salt across restarts. |
- static std::string CreateRandomMediaDeviceIDSalt(); |
- |
- private: |
- const std::string media_device_id_salt_; |
+ // Returns a callback that can be invoked to get a random salt |
+ // string that is used for creating media device IDs. The salt |
+ // should be stored in the current user profile and should be reset |
+ // if cookies are cleared. The default is an empty string. |
+ // |
+ // It is safe to hold on to the callback returned and use it without |
+ // regard to the lifetime of ResourceContext, although in general |
+ // you should not use it long after the profile has been destroyed. |
+ // |
+ // TODO(joi): We don't think it should be unnecessary to use this |
+ // after ResourceContext goes away. There is likely an underying bug |
+ // in the lifetime of ProfileIOData vs. ResourceProcessHost, where |
+ // sometimes ProfileIOData has gone away before RPH has finished |
+ // being torn down (on the IO thread). The current interface that |
+ // allows using the salt object after ResourceContext has gone away |
+ // was put in place to fix http://crbug.com/341211 but I intend to |
+ // try to figure out how the lifetime should be fixed properly. The |
+ // original interface was just a method that returns a string. |
+ // |
+ // TODO(perkj): Make this method pure virtual when crbug/315022 is |
+ // fixed. |
+ typedef base::Callback<std::string()> SaltCallback; |
+ virtual SaltCallback GetMediaDeviceIDSalt(); |
}; |
} // namespace content |