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

Unified Diff: content/browser/indexed_db/idbbindingutilities_browsertest.cc

Issue 10834350: Remove all the indexeddb-related utility process code (Closed) Base URL: http://git.chromium.org/chromium/src.git@opencursor-cleanup
Patch Set: Rebase, attempt to reland Created 8 years, 4 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/indexed_db/OWNERS ('k') | content/common/utility_messages.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/indexed_db/idbbindingutilities_browsertest.cc
diff --git a/content/browser/indexed_db/idbbindingutilities_browsertest.cc b/content/browser/indexed_db/idbbindingutilities_browsertest.cc
deleted file mode 100644
index d23dd998387d36ca8958607cc750b24574fc64c2..0000000000000000000000000000000000000000
--- a/content/browser/indexed_db/idbbindingutilities_browsertest.cc
+++ /dev/null
@@ -1,440 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/bind.h"
-#include "base/message_loop.h"
-#include "base/utf_string_conversions.h"
-#include "content/browser/utility_process_host_impl.h"
-#include "content/public/browser/utility_process_host_client.h"
-#include "content/common/indexed_db/indexed_db_key.h"
-#include "content/common/indexed_db/indexed_db_key_path.h"
-#include "content/common/utility_messages.h"
-#include "content/common/webkitplatformsupport_impl.h"
-#include "content/public/common/serialized_script_value.h"
-#include "content/public/test/test_utils.h"
-#include "content/test/content_browser_test.h"
-#include "googleurl/src/gurl.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerializedScriptValue.h"
-#include "webkit/glue/idb_bindings.h"
-#include "webkit/glue/web_io_operators.h"
-
-using WebKit::WebSerializedScriptValue;
-using WebKit::WebIDBKeyPath;
-
-namespace content {
-
-// Enables calling WebKit::shutdown no matter where a "return" happens.
-class ScopedShutdownWebKit {
- public:
- ScopedShutdownWebKit() {
- }
-
- ~ScopedShutdownWebKit() {
- WebKit::shutdown();
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ScopedShutdownWebKit);
-};
-
-// Sanity test, check the function call directly outside the sandbox.
-TEST(IDBKeyPathWithoutSandbox, Value) {
- WebKitPlatformSupportImpl webkit_platform_support;
- WebKit::initialize(&webkit_platform_support);
- ScopedShutdownWebKit shutdown_webkit;
-
- // {foo: "zoo"}
- char16 data_foo_zoo[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
- std::vector<WebSerializedScriptValue> serialized_values;
- serialized_values.push_back(
- WebSerializedScriptValue::fromString(string16(data_foo_zoo,
- arraysize(data_foo_zoo))));
-
- // {foo: null}
- char16 data_foo_null[] = {0x0353, 0x6f66, 0x306f, 0x017b};
- serialized_values.push_back(SerializedScriptValue(
- false, false, string16(data_foo_null, arraysize(data_foo_null))));
-
- // {}
- char16 data_object[] = {0x017b};
- serialized_values.push_back(SerializedScriptValue(
- false, false, string16(data_object, arraysize(data_object))));
-
- // null
- serialized_values.push_back(
- WebSerializedScriptValue::fromString(string16()));
-
- std::vector<WebKit::WebIDBKey> values;
- IndexedDBKeyPath key_path;
-
- key_path.SetString(UTF8ToUTF16("foo"));
- webkit_glue::IDBKeysFromValuesAndKeyPath(
- serialized_values, key_path, &values);
-
- ASSERT_EQ(size_t(4), values.size());
- ASSERT_EQ(WebKit::WebIDBKey::StringType, values[0].type());
- ASSERT_EQ(UTF8ToUTF16("zoo"), values[0].string());
- ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[1].type());
- ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type());
- ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type());
-
- values.clear();
- key_path.SetString(UTF8ToUTF16("PropertyNotAvailable"));
- webkit_glue::IDBKeysFromValuesAndKeyPath(
- serialized_values, key_path, &values);
-
- ASSERT_EQ(size_t(4), values.size());
- ASSERT_EQ(WebKit::WebIDBKey::NullType, values[0].type());
- ASSERT_EQ(WebKit::WebIDBKey::NullType, values[1].type());
- ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type());
- ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type());
-
- values.clear();
- key_path.SetString(UTF8ToUTF16("!+Invalid[KeyPath[[["));
- ASSERT_FALSE(key_path.IsValid());
-}
-
-class IDBKeyPathHelper : public UtilityProcessHostClient {
- public:
- IDBKeyPathHelper()
- : expected_id_(0),
- value_for_key_path_failed_(false) {
- }
-
- void CreateUtilityProcess() {
- if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&IDBKeyPathHelper::CreateUtilityProcess, this));
- return;
- }
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- utility_process_host_ =
- (new UtilityProcessHostImpl(this, BrowserThread::IO))->AsWeakPtr();
- utility_process_host_->EnableZygote();
- utility_process_host_->StartBatchMode();
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- MessageLoop::QuitClosure());
- }
-
- void DestroyUtilityProcess() {
- if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&IDBKeyPathHelper::DestroyUtilityProcess, this));
- return;
- }
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- utility_process_host_->EndBatchMode();
- utility_process_host_.reset();
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- MessageLoop::QuitClosure());
- }
-
- void SetExpectedKeys(int expected_id,
- const std::vector<IndexedDBKey>& expected_keys,
- bool failed) {
- expected_id_ = expected_id;
- expected_keys_ = expected_keys;
- value_for_key_path_failed_ = failed;
- }
-
- void SetExpectedValue(const SerializedScriptValue& expected_value) {
- expected_value_ = expected_value;
- }
-
- void CheckValuesForKeyPath(
- int id,
- const std::vector<SerializedScriptValue>& serialized_values,
- const IndexedDBKeyPath& key_path) {
- if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&IDBKeyPathHelper::CheckValuesForKeyPath, this, id,
- serialized_values, key_path));
- return;
- }
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- bool ret = utility_process_host_->Send(
- new UtilityMsg_IDBKeysFromValuesAndKeyPath(
- id, serialized_values, key_path));
- ASSERT_TRUE(ret);
- }
-
- void CheckInjectValue(const IndexedDBKey& key,
- const SerializedScriptValue& value,
- const IndexedDBKeyPath& key_path) {
- if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&IDBKeyPathHelper::CheckInjectValue, this, key, value,
- key_path));
- return;
- }
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- bool ret = utility_process_host_->Send(new UtilityMsg_InjectIDBKey(
- key, value, key_path));
- ASSERT_TRUE(ret);
- }
-
- // UtilityProcessHostClient
- bool OnMessageReceived(const IPC::Message& message) {
- bool msg_is_ok = true;
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP_EX(IDBKeyPathHelper, message, msg_is_ok)
- IPC_MESSAGE_HANDLER(UtilityHostMsg_IDBKeysFromValuesAndKeyPath_Succeeded,
- OnIDBKeysFromValuesAndKeyPathSucceeded)
- IPC_MESSAGE_HANDLER(UtilityHostMsg_InjectIDBKey_Finished,
- OnInjectIDBKeyFinished)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP_EX()
- return handled;
- }
-
- void OnIDBKeysFromValuesAndKeyPathSucceeded(
- int id, const std::vector<IndexedDBKey>& values) {
- EXPECT_EQ(expected_id_, id);
- EXPECT_FALSE(value_for_key_path_failed_);
- ASSERT_EQ(expected_keys_.size(), values.size());
- size_t pos = 0;
- for (std::vector<IndexedDBKey>::const_iterator i(values.begin());
- i != values.end(); ++i, ++pos) {
- ASSERT_EQ(expected_keys_[pos].type(), i->type());
- if (i->type() == WebKit::WebIDBKey::StringType) {
- ASSERT_EQ(expected_keys_[pos].string(), i->string());
- } else if (i->type() == WebKit::WebIDBKey::NumberType) {
- ASSERT_EQ(expected_keys_[pos].number(), i->number());
- }
- }
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- MessageLoop::QuitClosure());
- }
-
- void OnIDBKeysFromValuesAndKeyPathFailed(int id) {
- EXPECT_TRUE(value_for_key_path_failed_);
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- MessageLoop::QuitClosure());
- }
-
- void OnInjectIDBKeyFinished(const SerializedScriptValue& new_value) {
- EXPECT_EQ(expected_value_.data(), new_value.data());
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- MessageLoop::QuitClosure());
- }
-
-
- private:
- virtual ~IDBKeyPathHelper() {}
-
- int expected_id_;
- std::vector<IndexedDBKey> expected_keys_;
- base::WeakPtr<UtilityProcessHost> utility_process_host_;
- bool value_for_key_path_failed_;
- SerializedScriptValue expected_value_;
-};
-
-// This test fixture runs in the UI thread. However, most of the work done by
-// UtilityProcessHost (and wrapped by IDBKeyPathHelper above) happens on the IO
-// thread. This fixture delegates to IDBKeyPathHelper and blocks via
-// "RunMessageLoop()", until IDBKeyPathHelper posts a quit
-// message the MessageLoop.
-class ScopedIDBKeyPathHelper {
- public:
- ScopedIDBKeyPathHelper() {
- key_path_helper_ = new IDBKeyPathHelper();
- key_path_helper_->CreateUtilityProcess();
- RunMessageLoop();
- }
-
- ~ScopedIDBKeyPathHelper() {
- key_path_helper_->DestroyUtilityProcess();
- RunMessageLoop();
- }
-
- void SetExpectedKeys(int id,
- const std::vector<IndexedDBKey>& expected_keys,
- bool failed) {
- key_path_helper_->SetExpectedKeys(id, expected_keys, failed);
- }
-
- void SetExpectedValue(const SerializedScriptValue& expected_value) {
- key_path_helper_->SetExpectedValue(expected_value);
- }
-
- void CheckValuesForKeyPath(
- int id,
- const std::vector<SerializedScriptValue>&
- serialized_script_values,
- const IndexedDBKeyPath& key_path) {
- key_path_helper_->CheckValuesForKeyPath(id, serialized_script_values,
- key_path);
- RunMessageLoop();
- }
-
- void CheckInjectValue(const IndexedDBKey& key,
- const SerializedScriptValue& value,
- const IndexedDBKeyPath& key_path) {
- key_path_helper_->CheckInjectValue(key, value, key_path);
- RunMessageLoop();
- }
-
- private:
- scoped_refptr<IDBKeyPathHelper> key_path_helper_;
-};
-
-// Cases:
-IN_PROC_BROWSER_TEST_F(ContentBrowserTest, IDBKeyPathExtract) {
- ScopedIDBKeyPathHelper scoped_helper;
- const int kId = 7;
- std::vector<IndexedDBKey> expected_keys;
- std::vector<SerializedScriptValue> serialized_values;
-
- IndexedDBKey string_zoo_key;
- string_zoo_key.SetString(UTF8ToUTF16("zoo"));
- IndexedDBKey null_key;
- null_key.SetNull();
- IndexedDBKey invalid_key;
- invalid_key.SetInvalid();
-
- // keypath: "foo", value: {foo: "zoo"}, expected: "zoo"
- char16 data_foo_zoo[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
- serialized_values.push_back(SerializedScriptValue(
- false, false, string16(data_foo_zoo, arraysize(data_foo_zoo))));
- expected_keys.push_back(string_zoo_key);
-
- // keypath: "foo", value: {foo: null}, expected: invalid
- char16 data_foo_null[] = {0x0353, 0x6f66, 0x306f, 0x017b};
- serialized_values.push_back(SerializedScriptValue(
- false, false, string16(data_foo_null, arraysize(data_foo_null))));
- expected_keys.push_back(invalid_key);
-
- // keypath: "foo", value: {}, expected: null
- char16 data_object[] = {0x017b};
- serialized_values.push_back(SerializedScriptValue(
- false, false, string16(data_object, arraysize(data_object))));
- expected_keys.push_back(null_key);
-
- // keypath: "foo", value: null, expected: null
- serialized_values.push_back(
- SerializedScriptValue(true, false, string16()));
- expected_keys.push_back(null_key);
-
- scoped_helper.SetExpectedKeys(kId, expected_keys, false);
-
- IndexedDBKeyPath key_path;
- key_path.SetString(UTF8ToUTF16("foo"));
- scoped_helper.CheckValuesForKeyPath(
- kId, serialized_values, key_path);
-}
-
-IN_PROC_BROWSER_TEST_F(ContentBrowserTest, IDBKeyPathPropertyNotAvailable) {
- ScopedIDBKeyPathHelper scoped_helper;
- const int kId = 7;
- std::vector<IndexedDBKey> expected_keys;
- IndexedDBKey null_value;
- null_value.SetNull();
- expected_keys.push_back(null_value);
- expected_keys.push_back(null_value);
-
- scoped_helper.SetExpectedKeys(kId, expected_keys, false);
-
- std::vector<SerializedScriptValue> serialized_values;
- // {foo: "zoo", bar: null}
- char16 data[] = {0x0353, 0x6f66, 0x536f, 0x7a03, 0x6f6f, 0x0353, 0x6162,
- 0x3072, 0x027b};
- serialized_values.push_back(SerializedScriptValue(
- false, false, string16(data, arraysize(data))));
-
- // null
- serialized_values.push_back(
- SerializedScriptValue(true, false, string16()));
-
- IndexedDBKeyPath key_path;
- key_path.SetString(UTF8ToUTF16("PropertyNotAvailable"));
- scoped_helper.CheckValuesForKeyPath(kId, serialized_values, key_path);
-}
-
-IN_PROC_BROWSER_TEST_F(ContentBrowserTest, IDBKeyPathMultipleCalls) {
- ScopedIDBKeyPathHelper scoped_helper;
- const int kId = 7;
- std::vector<IndexedDBKey> expected_keys;
-
- IndexedDBKey null_value;
- null_value.SetNull();
- expected_keys.push_back(null_value);
- expected_keys.push_back(null_value);
- scoped_helper.SetExpectedKeys(kId, expected_keys, false);
-
- std::vector<SerializedScriptValue> serialized_values;
-
- // {foo: "zoo", bar: null}
- char16 data[] = {0x0353, 0x6f66, 0x536f, 0x7a03, 0x6f6f, 0x0353, 0x6162,
- 0x3072, 0x027b};
- serialized_values.push_back(SerializedScriptValue(
- false, false, string16(data, arraysize(data))));
-
- // null
- serialized_values.push_back(
- SerializedScriptValue(true, false, string16()));
-
- IndexedDBKeyPath key_path;
- key_path.SetString(UTF8ToUTF16("PropertyNotAvailable"));
- scoped_helper.CheckValuesForKeyPath(kId, serialized_values, key_path);
-
- // Call again with the Utility process in batch mode and with valid keys.
- expected_keys.clear();
- IndexedDBKey value;
- value.SetString(UTF8ToUTF16("zoo"));
- expected_keys.push_back(value);
- expected_keys.push_back(null_value);
- scoped_helper.SetExpectedKeys(kId + 1, expected_keys, false);
- key_path.SetString(UTF8ToUTF16("foo"));
- scoped_helper.CheckValuesForKeyPath(kId + 1, serialized_values, key_path);
-}
-
-IN_PROC_BROWSER_TEST_F(ContentBrowserTest, InjectIDBKey) {
- // {foo: 'zoo'}
- const char16 initial_data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
- SerializedScriptValue value(
- false, false, string16(initial_data, arraysize(initial_data)));
- IndexedDBKey key;
- key.SetString(UTF8ToUTF16("myNewKey"));
-
- ScopedIDBKeyPathHelper scoped_helper;
-
- // {foo: 'zoo', bar: 'myNewKey'}
- const char16 expected_data[] = {0x01ff, 0x003f, 0x3f6f, 0x5301, 0x6603,
- 0x6f6f, 0x013f, 0x0353, 0x6f7a, 0x3f6f,
- 0x5301, 0x6203, 0x7261, 0x013f, 0x0853,
- 0x796d, 0x654e, 0x4b77, 0x7965, 0x027b};
- SerializedScriptValue expected_value(
- false, false, string16(expected_data, arraysize(expected_data)));
- scoped_helper.SetExpectedValue(expected_value);
- IndexedDBKeyPath key_path;
- key_path.SetString(UTF8ToUTF16("bar"));
- scoped_helper.CheckInjectValue(key, value, key_path);
-
- // Should fail - can't apply properties to string value of key foo
- const SerializedScriptValue failure_value;
- scoped_helper.SetExpectedValue(failure_value);
- key_path.SetString(UTF8ToUTF16("foo.bad.path"));
- scoped_helper.CheckInjectValue(key, value, key_path);
-
- // {foo: 'zoo', bar: {baz: 'myNewKey'}}
- const char16 expected_data2[] = {0x01ff, 0x003f, 0x3f6f, 0x5301, 0x6603,
- 0x6f6f, 0x013f, 0x0353, 0x6f7a, 0x3f6f,
- 0x5301, 0x6203, 0x7261, 0x013f, 0x3f6f,
- 0x5302, 0x6203, 0x7a61, 0x023f, 0x0853,
- 0x796d, 0x654e, 0x4b77, 0x7965, 0x017b,
- 0x027b};
- SerializedScriptValue expected_value2(
- false, false, string16(expected_data2, arraysize(expected_data2)));
- scoped_helper.SetExpectedValue(expected_value2);
- key_path.SetString(UTF8ToUTF16("bar.baz"));
- scoped_helper.CheckInjectValue(key, value, key_path);
-}
-
-} // namespace content
« no previous file with comments | « content/browser/indexed_db/OWNERS ('k') | content/common/utility_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698