forked from Pissandshittium/pissandshittium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Recommit "Bring up Firefox Password Import Unittest on OS X."
This recommits r23971 Review URL: http://codereview.chromium.org/174259 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24024 0039d316-1c4b-4281-b951-d872f2087c98
- Loading branch information
jeremy@chromium.org
committed
Aug 21, 2009
1 parent
c451714
commit 1db97ce
Showing
29 changed files
with
520 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
chrome/browser/importer/firefox_importer_unittest_messages_internal.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
// Copyright (c) 2009 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. | ||
|
||
// This header is meant to be included in multiple passes, hence no traditional | ||
// header guard. | ||
// See ipc_message_macros.h for explanation of the macros and passes. | ||
|
||
#include "ipc/ipc_message_macros.h" | ||
|
||
// Messages definitions for messages sent between the unit test binary and | ||
// a child process by FFUnitTestDecryptorProxy. | ||
IPC_BEGIN_MESSAGES(Test) | ||
|
||
// Server->Child: Initialize the decrytor with the following paramters. | ||
IPC_MESSAGE_CONTROL2(Msg_Decryptor_Init, | ||
std::wstring /* dll_path */, | ||
std::wstring /* db_path */) | ||
// Child->Server: Return paramter from init call. | ||
IPC_MESSAGE_CONTROL1(Msg_Decryptor_InitReturnCode, | ||
bool /* ret */) | ||
|
||
// Server->Child: Decrypt a given string. | ||
IPC_MESSAGE_CONTROL1(Msg_Decrypt, | ||
std::string /* crypt */) | ||
// Child->Server: Decrypted String. | ||
IPC_MESSAGE_CONTROL1(Msg_Decryptor_Response, | ||
std::wstring /* unencrypted_str */) | ||
|
||
// Server->Child: Die. | ||
IPC_MESSAGE_CONTROL0(Msg_Decryptor_Quit) | ||
|
||
IPC_END_MESSAGES(Test) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
// Copyright (c) 2009 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. | ||
|
||
#ifndef CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UNITTEST_UTILS_H_ | ||
#define CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UNITTEST_UTILS_H_ | ||
|
||
#include "base/basictypes.h" | ||
#include "base/process_util.h" | ||
#include "base/scoped_ptr.h" | ||
#include "chrome/browser/importer/nss_decryptor.h" | ||
|
||
class FFDecryptorServerChannelListener; | ||
namespace IPC { | ||
class Channel; | ||
} // namespace IPC | ||
class MessageLoopForIO; | ||
|
||
// On OS X NSSDecryptor needs to run in a separate process. To allow us to use | ||
// the same unit test on all platforms we use a proxy class which spawns a | ||
// child process to do decryption on OS X, and calls through directly | ||
// to NSSDecryptor on other platforms. | ||
// On OS X: | ||
// 2 IPC messages are sent for every method of NSSDecryptor, one containing the | ||
// input arguments sent from Server->Child and one coming back containing | ||
// the return argument e.g. | ||
// | ||
// -> Msg_Decryptor_Init(dll_path, db_path) | ||
// <- Msg_Decryptor_InitReturnCode(bool) | ||
class FFUnitTestDecryptorProxy { | ||
public: | ||
FFUnitTestDecryptorProxy(); | ||
virtual ~FFUnitTestDecryptorProxy(); | ||
|
||
// Initialize a decryptor, returns true if the object was | ||
// constructed successfully. | ||
bool Setup(std::wstring& nss_path); | ||
|
||
// This match the parallel functions in NSSDecryptor. | ||
bool DecryptorInit(const std::wstring& dll_path, const std::wstring& db_path); | ||
std::wstring Decrypt(const std::string& crypt); | ||
|
||
private: | ||
#if defined(OS_MACOSX) | ||
// Blocks until either a timeout is reached, or until the client process | ||
// responds to an IPC message. | ||
// Returns true if a reply was recieved successfully and false if the | ||
// the operation timed out. | ||
bool WaitForClientResponse(); | ||
|
||
base::ProcessHandle child_process_; | ||
scoped_ptr<IPC::Channel> channel_; | ||
scoped_ptr<FFDecryptorServerChannelListener> listener_; | ||
scoped_ptr<MessageLoopForIO> message_loop_; | ||
#else | ||
NSSDecryptor decryptor_; | ||
#endif // !OS_MACOSX | ||
DISALLOW_COPY_AND_ASSIGN(FFUnitTestDecryptorProxy); | ||
}; | ||
|
||
// On Non-OSX platforms FFUnitTestDecryptorProxy simply calls through to | ||
// NSSDecryptor. | ||
#if !defined(OS_MACOSX) | ||
FFUnitTestDecryptorProxy::FFUnitTestDecryptorProxy() { | ||
} | ||
|
||
FFUnitTestDecryptorProxy::~FFUnitTestDecryptorProxy() { | ||
} | ||
|
||
bool FFUnitTestDecryptorProxy::Setup(std::wstring& /* nss_path */) { | ||
return true; | ||
} | ||
|
||
bool FFUnitTestDecryptorProxy::DecryptorInit(const std::wstring& dll_path, | ||
const std::wstring& db_path) { | ||
return decryptor_.Init(dll_path, db_path); | ||
} | ||
|
||
std::wstring FFUnitTestDecryptorProxy::Decrypt(const std::string& crypt) { | ||
return decryptor_.Decrypt(crypt); | ||
} | ||
#endif // !OS_MACOSX | ||
|
||
#endif // CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UNITTEST_UTILS_H_ |
Oops, something went wrong.