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
3// found in the LICENSE file.
4
5#ifndef CONTENT_RENDERER_SOCKET_STREAM_HANDLE_DATA_H_
6#define CONTENT_RENDERER_SOCKET_STREAM_HANDLE_DATA_H_
7
8#include "base/supports_user_data.h"
9#include "content_export.h"
10
11namespace blink {
12class WebSocketStreamHandle;
13}
14
15namespace content {
16
17// User data stored in each WebSocketStreamHandleImpl.
18class SocketStreamHandleData : public base::SupportsUserData::Data {
19 public:
20  virtual ~SocketStreamHandleData() {}
21
22  int render_view_id() const { return render_view_id_; }
23
24  // Creates SocketStreamHandleData object with |render_view_id| and store it
25  // to |handle|.
26  static void AddToHandle(
27      blink::WebSocketStreamHandle* handle, int render_view_id);
28
29  // Retrieves the stored user data from blink::WebSocketStreamHandle object.
30  // |handle| must actually be a WebSocketStreamHandleImpl object.
31  CONTENT_EXPORT static const SocketStreamHandleData* ForHandle(
32      blink::WebSocketStreamHandle* handle);
33
34 private:
35  explicit SocketStreamHandleData(int render_view_id)
36      : render_view_id_(render_view_id) {
37  }
38
39  int render_view_id_;
40
41  DISALLOW_COPY_AND_ASSIGN(SocketStreamHandleData);
42};
43
44}  // namespace content
45
46#endif  // CONTENT_RENDERER_SOCKET_STREAM_HANDLE_DATA_H_
47