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

Side by Side Diff: chrome/browser/in_process_webkit/browser_webkitclient_impl.cc

Issue 4678002: IndexedDB: Keep the utility process open. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: patch Created 10 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #include "chrome/browser/in_process_webkit/browser_webkitclient_impl.h" 5 #include "chrome/browser/in_process_webkit/browser_webkitclient_impl.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "chrome/browser/in_process_webkit/dom_storage_dispatcher_host.h" 9 #include "chrome/browser/in_process_webkit/dom_storage_dispatcher_host.h"
10 #include "chrome/browser/in_process_webkit/indexed_db_key_utility_client.h" 10 #include "chrome/browser/in_process_webkit/indexed_db_key_utility_client.h"
11 #include "chrome/common/indexed_db_key.h" 11 #include "chrome/common/indexed_db_key.h"
12 #include "chrome/common/serialized_script_value.h" 12 #include "chrome/common/serialized_script_value.h"
13 #include "third_party/WebKit/WebKit/chromium/public/WebData.h" 13 #include "third_party/WebKit/WebKit/chromium/public/WebData.h"
14 #include "third_party/WebKit/WebKit/chromium/public/WebSerializedScriptValue.h" 14 #include "third_party/WebKit/WebKit/chromium/public/WebSerializedScriptValue.h"
15 #include "third_party/WebKit/WebKit/chromium/public/WebString.h" 15 #include "third_party/WebKit/WebKit/chromium/public/WebString.h"
16 #include "third_party/WebKit/WebKit/chromium/public/WebURL.h" 16 #include "third_party/WebKit/WebKit/chromium/public/WebURL.h"
17 #include "webkit/glue/webkit_glue.h" 17 #include "webkit/glue/webkit_glue.h"
18 18
19 BrowserWebKitClientImpl::BrowserWebKitClientImpl() { 19 BrowserWebKitClientImpl::BrowserWebKitClientImpl() {
20 file_utilities_.set_sandbox_enabled(false); 20 file_utilities_.set_sandbox_enabled(false);
21 } 21 }
22 22
23 BrowserWebKitClientImpl::~BrowserWebKitClientImpl() {
24 }
25
23 WebKit::WebClipboard* BrowserWebKitClientImpl::clipboard() { 26 WebKit::WebClipboard* BrowserWebKitClientImpl::clipboard() {
24 NOTREACHED(); 27 NOTREACHED();
25 return NULL; 28 return NULL;
26 } 29 }
27 30
28 WebKit::WebMimeRegistry* BrowserWebKitClientImpl::mimeRegistry() { 31 WebKit::WebMimeRegistry* BrowserWebKitClientImpl::mimeRegistry() {
29 NOTREACHED(); 32 NOTREACHED();
30 return NULL; 33 return NULL;
31 } 34 }
32 35
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 NOTREACHED(); 140 NOTREACHED();
138 return NULL; 141 return NULL;
139 } 142 }
140 143
141 int BrowserWebKitClientImpl::databaseDeleteFile( 144 int BrowserWebKitClientImpl::databaseDeleteFile(
142 const WebKit::WebString& vfs_file_name, bool sync_dir) { 145 const WebKit::WebString& vfs_file_name, bool sync_dir) {
143 const FilePath path = webkit_glue::WebStringToFilePath(vfs_file_name); 146 const FilePath path = webkit_glue::WebStringToFilePath(vfs_file_name);
144 return file_util::Delete(path, false) ? 0 : 1; 147 return file_util::Delete(path, false) ? 0 : 1;
145 } 148 }
146 149
150 void BrowserWebKitClientImpl::idbShutdown() {
151 if (indexed_db_key_utility_client_.get())
152 indexed_db_key_utility_client_->EndUtilityProcess();
153 }
154
147 void BrowserWebKitClientImpl::createIDBKeysFromSerializedValuesAndKeyPath( 155 void BrowserWebKitClientImpl::createIDBKeysFromSerializedValuesAndKeyPath(
148 const WebKit::WebVector<WebKit::WebSerializedScriptValue>& values, 156 const WebKit::WebVector<WebKit::WebSerializedScriptValue>& values,
149 const WebKit::WebString& keyPath, 157 const WebKit::WebString& keyPath,
150 WebKit::WebVector<WebKit::WebIDBKey>& keys) { 158 WebKit::WebVector<WebKit::WebIDBKey>& keys) {
151 // TODO(bulach): we need to figure out a way to keep the utility process 159 if (!indexed_db_key_utility_client_.get()) {
152 // running for longer, and shut it down when no longer used. 160 indexed_db_key_utility_client_ = new IndexedDBKeyUtilityClient();
153 scoped_refptr<IndexedDBKeyUtilityClient> indexed_db_key_utility_client( 161 indexed_db_key_utility_client_->StartUtilityProcess();
154 new IndexedDBKeyUtilityClient()); 162 }
155 indexed_db_key_utility_client->StartUtilityProcess();
156 163
157 std::vector<SerializedScriptValue> std_values; 164 std::vector<SerializedScriptValue> std_values;
158 size_t size = values.size(); 165 size_t size = values.size();
159 std_values.reserve(size); 166 std_values.reserve(size);
160 for (size_t i = 0; i < size; ++i) 167 for (size_t i = 0; i < size; ++i)
161 std_values.push_back(SerializedScriptValue(values[i])); 168 std_values.push_back(SerializedScriptValue(values[i]));
162 169
163 std::vector<IndexedDBKey> std_keys; 170 std::vector<IndexedDBKey> std_keys;
164 indexed_db_key_utility_client->CreateIDBKeysFromSerializedValuesAndKeyPath( 171 indexed_db_key_utility_client_->CreateIDBKeysFromSerializedValuesAndKeyPath(
165 std_values, keyPath, &std_keys); 172 std_values, keyPath, &std_keys);
166 173
167 indexed_db_key_utility_client->EndUtilityProcess();
168
169 keys = std_keys; 174 keys = std_keys;
170 } 175 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698