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

Unified Diff: chrome/browser/idbbindingutilities_browsertest.cc

Issue 8470006: Enforce that most content messages files can't be included by chrome. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/debugger/devtools_sanity_unittest.cc ('k') | chrome/browser/ui/panels/panel_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/idbbindingutilities_browsertest.cc
===================================================================
--- chrome/browser/idbbindingutilities_browsertest.cc (revision 110802)
+++ chrome/browser/idbbindingutilities_browsertest.cc (working copy)
@@ -1,371 +0,0 @@
-// Copyright (c) 2011 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/utf_string_conversions.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/test/base/in_process_browser_test.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "content/browser/renderer_host/resource_dispatcher_host.h"
-#include "content/browser/utility_process_host.h"
-#include "content/common/indexed_db_key.h"
-#include "content/common/utility_messages.h"
-#include "content/public/common/serialized_script_value.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/WebSerializedScriptValue.h"
-#include "webkit/glue/idb_bindings.h"
-#include "webkit/glue/web_io_operators.h"
-#include "webkit/glue/webkitplatformsupport_impl.h"
-
-using content::BrowserThread;
-using WebKit::WebSerializedScriptValue;
-
-// 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) {
- webkit_glue::WebKitPlatformSupportImpl webkit_platform_support;
- WebKit::initialize(&webkit_platform_support);
- ScopedShutdownWebKit shutdown_webkit;
-
- char16 data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
- std::vector<WebSerializedScriptValue> serialized_values;
- serialized_values.push_back(
- WebSerializedScriptValue::fromString(string16(data, arraysize(data))));
- serialized_values.push_back(
- WebSerializedScriptValue::fromString(string16()));
-
- std::vector<WebKit::WebIDBKey> values;
- string16 key_path(UTF8ToUTF16("foo"));
- bool error = webkit_glue::IDBKeysFromValuesAndKeyPath(
- serialized_values, key_path, &values);
-
- ASSERT_EQ(size_t(2), 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_FALSE(error);
-
- values.clear();
- key_path = UTF8ToUTF16("PropertyNotAvailable");
- error = webkit_glue::IDBKeysFromValuesAndKeyPath(
- serialized_values, key_path, &values);
-
- ASSERT_EQ(size_t(2), values.size());
- ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[0].type());
- ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[1].type());
- ASSERT_FALSE(error);
-
- values.clear();
- key_path = UTF8ToUTF16("!+Invalid[KeyPath[[[");
- error = webkit_glue::IDBKeysFromValuesAndKeyPath(
- serialized_values, key_path, &values);
-
- ASSERT_TRUE(error);
- ASSERT_EQ(size_t(2), values.size());
- ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[0].type());
- ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[1].type());
-}
-
-class IDBKeyPathHelper : public UtilityProcessHost::Client {
- public:
- IDBKeyPathHelper()
- : expected_id_(0),
- utility_process_host_(NULL),
- value_for_key_path_failed_(false) {
- }
-
- void CreateUtilityProcess() {
- if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- NewRunnableMethod(this, &IDBKeyPathHelper::CreateUtilityProcess));
- return;
- }
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- utility_process_host_ =
- new UtilityProcessHost(this, BrowserThread::IO);
- utility_process_host_->StartBatchMode();
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- new MessageLoop::QuitTask());
- }
-
- void DestroyUtilityProcess() {
- if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- NewRunnableMethod(this, &IDBKeyPathHelper::DestroyUtilityProcess));
- return;
- }
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- utility_process_host_->EndBatchMode();
- utility_process_host_ = NULL;
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- new MessageLoop::QuitTask());
- }
-
- 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 content::SerializedScriptValue& expected_value) {
- expected_value_ = expected_value;
- }
-
- void CheckValuesForKeyPath(
- int id,
- const std::vector<content::SerializedScriptValue>& serialized_values,
- const string16& key_path) {
- if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- NewRunnableMethod(this, &IDBKeyPathHelper::CheckValuesForKeyPath,
- 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 content::SerializedScriptValue& value,
- const string16& key_path) {
- if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- NewRunnableMethod(this, &IDBKeyPathHelper::CheckInjectValue,
- 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);
- }
-
- // UtilityProcessHost::Client
- 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_IDBKeysFromValuesAndKeyPath_Failed,
- OnIDBKeysFromValuesAndKeyPathFailed)
- 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,
- new MessageLoop::QuitTask());
- }
-
- void OnIDBKeysFromValuesAndKeyPathFailed(int id) {
- EXPECT_TRUE(value_for_key_path_failed_);
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- new MessageLoop::QuitTask());
- }
-
- void OnInjectIDBKeyFinished(const content::SerializedScriptValue& new_value) {
- EXPECT_EQ(expected_value_.data(), new_value.data());
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- new MessageLoop::QuitTask());
- }
-
-
- private:
- int expected_id_;
- std::vector<IndexedDBKey> expected_keys_;
- UtilityProcessHost* utility_process_host_;
- bool value_for_key_path_failed_;
- content::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
-// "ui_test_utils::RunMessageLoop()", until IDBKeyPathHelper posts a quit
-// message the MessageLoop.
-class ScopedIDBKeyPathHelper {
- public:
- ScopedIDBKeyPathHelper() {
- key_path_helper_ = new IDBKeyPathHelper();
- key_path_helper_->CreateUtilityProcess();
- ui_test_utils::RunMessageLoop();
- }
-
- ~ScopedIDBKeyPathHelper() {
- key_path_helper_->DestroyUtilityProcess();
- ui_test_utils::RunMessageLoop();
- }
-
- void SetExpectedKeys(int id, const std::vector<IndexedDBKey>& expected_keys,
- bool failed) {
- key_path_helper_->SetExpectedKeys(id, expected_keys, failed);
- }
-
- void SetExpectedValue(const content::SerializedScriptValue& expected_value) {
- key_path_helper_->SetExpectedValue(expected_value);
- }
-
- void CheckValuesForKeyPath(
- int id,
- const std::vector<content::SerializedScriptValue>&
- serialized_script_values,
- const string16& key_path) {
- key_path_helper_->CheckValuesForKeyPath(id, serialized_script_values,
- key_path);
- ui_test_utils::RunMessageLoop();
- }
-
- void CheckInjectValue(const IndexedDBKey& key,
- const content::SerializedScriptValue& value,
- const string16& key_path) {
- key_path_helper_->CheckInjectValue(key, value, key_path);
- ui_test_utils::RunMessageLoop();
- }
-
- private:
- scoped_refptr<IDBKeyPathHelper> key_path_helper_;
-};
-
-IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathExtract) {
- ScopedIDBKeyPathHelper scoped_helper;
- const int kId = 7;
- std::vector<IndexedDBKey> expected_keys;
- IndexedDBKey value;
- value.SetString(UTF8ToUTF16("zoo"));
- expected_keys.push_back(value);
-
- IndexedDBKey invalid_value;
- invalid_value.SetInvalid();
- expected_keys.push_back(invalid_value);
-
- scoped_helper.SetExpectedKeys(kId, expected_keys, false);
-
- char16 data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
- std::vector<content::SerializedScriptValue> serialized_values;
- serialized_values.push_back(content::SerializedScriptValue(
- false, false, string16(data, arraysize(data))));
- serialized_values.push_back(
- content::SerializedScriptValue(true, false, string16()));
- scoped_helper.CheckValuesForKeyPath(
- kId, serialized_values, UTF8ToUTF16("foo"));
-}
-
-IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathPropertyNotAvailable) {
- ScopedIDBKeyPathHelper scoped_helper;
- const int kId = 7;
- std::vector<IndexedDBKey> expected_keys;
- IndexedDBKey invalid_value;
- invalid_value.SetInvalid();
- expected_keys.push_back(invalid_value);
- expected_keys.push_back(invalid_value);
-
- scoped_helper.SetExpectedKeys(kId, expected_keys, false);
-
- char16 data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
- std::vector<content::SerializedScriptValue> serialized_values;
- serialized_values.push_back(content::SerializedScriptValue(
- false, false, string16(data, arraysize(data))));
- serialized_values.push_back(
- content::SerializedScriptValue(true, false, string16()));
- scoped_helper.CheckValuesForKeyPath(kId, serialized_values,
- UTF8ToUTF16("PropertyNotAvailable"));
-}
-
-IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathMultipleCalls) {
- ScopedIDBKeyPathHelper scoped_helper;
- const int kId = 7;
- std::vector<IndexedDBKey> expected_keys;
- IndexedDBKey invalid_value;
- invalid_value.SetInvalid();
- expected_keys.push_back(invalid_value);
- expected_keys.push_back(invalid_value);
-
- scoped_helper.SetExpectedKeys(kId, expected_keys, true);
-
- char16 data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
- std::vector<content::SerializedScriptValue> serialized_values;
- serialized_values.push_back(content::SerializedScriptValue(
- false, false, string16(data, arraysize(data))));
- serialized_values.push_back(
- content::SerializedScriptValue(true, false, string16()));
- scoped_helper.CheckValuesForKeyPath(kId, serialized_values,
- UTF8ToUTF16("!+Invalid[KeyPath[[["));
-
- // 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(invalid_value);
- scoped_helper.SetExpectedKeys(kId + 1, expected_keys, false);
- scoped_helper.CheckValuesForKeyPath(kId + 1, serialized_values,
- UTF8ToUTF16("foo"));
-}
-
-IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, InjectIDBKey) {
- // {foo: 'zoo'}
- const char16 data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
- content::SerializedScriptValue value(
- false, false, string16(data, arraysize(data)));
- IndexedDBKey key;
- key.SetString(UTF8ToUTF16("myNewKey"));
-
- // {foo: 'zoo', bar: 'myNewKey'}
- const char16 expected_data[] = {0x353, 0x6f66, 0x536f, 0x7a03, 0x6f6f, 0x353,
- 0x6162, 0x5372, 0x6d08, 0x4e79, 0x7765,
- 0x654b, 0x7b79, 0x2};
- content::SerializedScriptValue expected_value(
- false, false, string16(expected_data, arraysize(expected_data)));
-
- ScopedIDBKeyPathHelper scoped_helper;
- scoped_helper.SetExpectedValue(expected_value);
- // TODO(lukezarko@gmail.com): re-enable this after the changes described at
- // https://bugs.webkit.org/show_bug.cgi?id=63481 land.
- // scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bar"));
-
- // Expect null.
- scoped_helper.SetExpectedValue(content::SerializedScriptValue());
- scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bad.key.path"));
-}
« no previous file with comments | « chrome/browser/debugger/devtools_sanity_unittest.cc ('k') | chrome/browser/ui/panels/panel_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698