• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 #include "webkit/glue/idb_bindings.h"
6 
7 #include "base/basictypes.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/string16.h"
10 #include "base/utf_string_conversions.h"
11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKey.h"
12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKeyPath.h"
13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptValue.h"
14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
15 
16 namespace webkit_glue {
17 
18 using WebKit::WebIDBKey;
19 using WebKit::WebIDBKeyPath;
20 using WebKit::WebSerializedScriptValue;
21 
IDBKeysFromValuesAndKeyPath(const std::vector<WebSerializedScriptValue> & serialized_script_values,const string16 & idb_key_path,std::vector<WebIDBKey> * values)22 bool IDBKeysFromValuesAndKeyPath(
23     const std::vector<WebSerializedScriptValue>& serialized_script_values,
24     const string16& idb_key_path,
25     std::vector<WebIDBKey>* values) {
26   WebIDBKeyPath web_idb_key_path = WebIDBKeyPath::create(idb_key_path);
27   bool error = web_idb_key_path.parseError() != 0;
28   // TODO(bulach): what to do when we have a parse error? For now, setting
29   // all values back as invalid and returning a boolean.
30   for (std::vector<WebSerializedScriptValue>::const_iterator i =
31            serialized_script_values.begin();
32        i != serialized_script_values.end(); ++i) {
33     if (error) {
34       values->push_back(WebIDBKey::createInvalid());
35     } else {
36       values->push_back(
37           WebIDBKey::createFromValueAndKeyPath(*i, web_idb_key_path));
38     }
39   }
40   return error;
41 }
42 
InjectIDBKey(const WebIDBKey & key,const WebSerializedScriptValue & value,const string16 & idb_key_path)43 WebSerializedScriptValue InjectIDBKey(
44     const WebIDBKey& key,
45     const WebSerializedScriptValue& value,
46     const string16& idb_key_path) {
47   return WebIDBKey::injectIDBKeyIntoSerializedValue(
48       key, value, WebIDBKeyPath::create(idb_key_path));
49 }
50 
51 }  // namespace webkit_glue
52