Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / browser / quota_dispatcher_host.h
1 // Copyright 2013 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_BROWSER_QUOTA_DISPATCHER_HOST_H_
6 #define CONTENT_BROWSER_QUOTA_DISPATCHER_HOST_H_
7
8 #include "base/basictypes.h"
9 #include "base/id_map.h"
10 #include "content/public/browser/browser_message_filter.h"
11 #include "storage/common/quota/quota_types.h"
12
13 class GURL;
14
15 namespace IPC {
16 class Message;
17 }
18
19 namespace storage {
20 class QuotaManager;
21 }
22
23 namespace content {
24 class QuotaPermissionContext;
25 struct StorageQuotaParams;
26
27 class QuotaDispatcherHost : public BrowserMessageFilter {
28  public:
29   QuotaDispatcherHost(int process_id,
30                       storage::QuotaManager* quota_manager,
31                       QuotaPermissionContext* permission_context);
32
33   // BrowserMessageFilter:
34   bool OnMessageReceived(const IPC::Message& message) override;
35
36  protected:
37   ~QuotaDispatcherHost() override;
38
39  private:
40   class RequestDispatcher;
41   class QueryUsageAndQuotaDispatcher;
42   class RequestQuotaDispatcher;
43
44   void OnQueryStorageUsageAndQuota(int request_id,
45                                    const GURL& origin_url,
46                                    storage::StorageType type);
47   void OnRequestStorageQuota(const StorageQuotaParams& params);
48
49   // The ID of this process.
50   int process_id_;
51
52   storage::QuotaManager* quota_manager_;
53   scoped_refptr<QuotaPermissionContext> permission_context_;
54
55   IDMap<RequestDispatcher, IDMapOwnPointer> outstanding_requests_;
56
57   base::WeakPtrFactory<QuotaDispatcherHost> weak_factory_;
58
59   DISALLOW_IMPLICIT_CONSTRUCTORS(QuotaDispatcherHost);
60 };
61
62 }  // namespace content
63
64 #endif  // CONTENT_BROWSER_QUOTA_DISPATCHER_HOST_H_