1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_INTERNALS_UI_H_
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_INTERNALS_UI_H_
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector>
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/memory/ref_counted.h"
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/public/browser/download_interrupt_reasons.h"
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/indexed_db_context.h"
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/web_ui_controller.h"
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)namespace base {
17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class ListValue;
18868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace content {
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class DownloadItem;
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class IndexedDBContextImpl;
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class StoragePartition;
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// The implementation for the chrome://indexeddb-internals page.
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class IndexedDBInternalsUI : public WebUIController {
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public:
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  explicit IndexedDBInternalsUI(WebUI* web_ui);
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual ~IndexedDBInternalsUI();
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private:
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void GetAllOrigins(const base::ListValue* args);
34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void GetAllOriginsOnIndexedDBThread(scoped_refptr<IndexedDBContext> context,
35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                                      const base::FilePath& context_path);
36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void OnOriginsReady(scoped_ptr<base::ListValue> origins,
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                      const base::FilePath& path);
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void AddContextFromStoragePartition(StoragePartition* partition);
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void DownloadOriginData(const base::ListValue* args);
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  void DownloadOriginDataOnIndexedDBThread(
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const base::FilePath& partition_path,
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const scoped_refptr<IndexedDBContextImpl> context,
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const GURL& origin_url);
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnDownloadDataReady(const base::FilePath& partition_path,
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                           const GURL& origin_url,
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                           const base::FilePath temp_path,
49ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                           const base::FilePath zip_path,
50ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                           size_t connection_count);
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnDownloadStarted(const base::FilePath& partition_path,
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                         const GURL& origin_url,
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                         const base::FilePath& temp_path,
54ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                         size_t connection_count,
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                         DownloadItem* item,
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                         DownloadInterruptReason interrupt_reason);
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
58ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void ForceCloseOrigin(const base::ListValue* args);
59ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void ForceCloseOriginOnIndexedDBThread(
60ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      const base::FilePath& partition_path,
61ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      const scoped_refptr<IndexedDBContextImpl> context,
62ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      const GURL& origin_url);
63ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void OnForcedClose(const base::FilePath& partition_path,
64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                     const GURL& origin_url,
65ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                     size_t connection_count);
66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  bool GetOriginContext(const base::FilePath& path,
67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                        const GURL& origin_url,
68ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                        scoped_refptr<IndexedDBContextImpl>* context);
69ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  bool GetOriginData(const base::ListValue* args,
70ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                     base::FilePath* path,
71ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                     GURL* origin_url,
72ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                     scoped_refptr<IndexedDBContextImpl>* context);
73ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(IndexedDBInternalsUI);
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace content
78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif  // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_INTERNALS_UI_H_
80