| Index: chrome_frame/test/net/process_singleton_subclass.cc
|
| diff --git a/chrome_frame/test/net/process_singleton_subclass.cc b/chrome_frame/test/net/process_singleton_subclass.cc
|
| deleted file mode 100644
|
| index 5365fd5b91a2b21dc0481126e57c9934651c79d4..0000000000000000000000000000000000000000
|
| --- a/chrome_frame/test/net/process_singleton_subclass.cc
|
| +++ /dev/null
|
| @@ -1,110 +0,0 @@
|
| -// Copyright (c) 2010 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 "chrome_frame/test/net/process_singleton_subclass.h"
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/path_service.h"
|
| -#include "base/string_util.h"
|
| -#include "chrome/browser/browser_process_impl.h"
|
| -#include "chrome/browser/profiles/profile_manager.h"
|
| -#include "chrome/common/chrome_constants.h"
|
| -#include "chrome/common/chrome_paths.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome_frame/test/net/test_automation_provider.h"
|
| -#include "chrome_frame/function_stub.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -ProcessSingletonSubclass::ProcessSingletonSubclass(
|
| - ProcessSingletonSubclassDelegate* delegate)
|
| - : stub_(NULL), delegate_(delegate), original_wndproc_(NULL) {
|
| -}
|
| -
|
| -ProcessSingletonSubclass::~ProcessSingletonSubclass() {
|
| - if (stub_) {
|
| - stub_->BypassStub(reinterpret_cast<void*>(original_wndproc_));
|
| - }
|
| -}
|
| -
|
| -bool ProcessSingletonSubclass::Subclass(const FilePath& user_data_dir) {
|
| - DCHECK(stub_ == NULL);
|
| - DCHECK(original_wndproc_ == NULL);
|
| - HWND hwnd = FindWindowEx(HWND_MESSAGE, NULL, chrome::kMessageWindowClass,
|
| - user_data_dir.value().c_str());
|
| - if (!::IsWindow(hwnd))
|
| - return false;
|
| -
|
| - // The window must be in this process for us to be able to subclass it.
|
| - DWORD pid = 0;
|
| - ::GetWindowThreadProcessId(hwnd, &pid);
|
| - EXPECT_EQ(pid, ::GetCurrentProcessId());
|
| -
|
| - original_wndproc_ = reinterpret_cast<WNDPROC>(::GetWindowLongPtr(hwnd,
|
| - GWLP_WNDPROC));
|
| - stub_ = FunctionStub::Create(reinterpret_cast<uintptr_t>(this),
|
| - &SubclassWndProc);
|
| - DCHECK(stub_);
|
| - ::SetWindowLongPtr(hwnd, GWLP_WNDPROC,
|
| - reinterpret_cast<LONG_PTR>(stub_->code()));
|
| - return true;
|
| -}
|
| -
|
| -// static
|
| -LRESULT ProcessSingletonSubclass::SubclassWndProc(ProcessSingletonSubclass* me,
|
| - HWND hwnd, UINT msg,
|
| - WPARAM wp, LPARAM lp) {
|
| - switch (msg) {
|
| - case WM_COPYDATA:
|
| - return me->OnCopyData(hwnd, reinterpret_cast<HWND>(wp),
|
| - reinterpret_cast<COPYDATASTRUCT*>(lp));
|
| - default:
|
| - break;
|
| - }
|
| -
|
| - return me->original_wndproc_(hwnd, msg, wp, lp);
|
| -}
|
| -
|
| -// static
|
| -LRESULT ProcessSingletonSubclass::OnCopyData(HWND hwnd, HWND from_hwnd,
|
| - const COPYDATASTRUCT* cds) {
|
| - // We should have enough room for the shortest command (min_message_size)
|
| - // and also be a multiple of wchar_t bytes. The shortest command
|
| - // possible is L"START\0\0" (empty current directory and command line).
|
| - static const int kMinMessageSize = sizeof(L"START\0");
|
| - EXPECT_TRUE(kMinMessageSize <= cds->cbData);
|
| -
|
| - if (kMinMessageSize > cds->cbData)
|
| - return TRUE;
|
| -
|
| - // We split the string into 4 parts on NULLs.
|
| - const wchar_t* begin = reinterpret_cast<const wchar_t*>(cds->lpData);
|
| - const wchar_t* end = begin + (cds->cbData / sizeof(wchar_t));
|
| - const wchar_t kNull = L'\0';
|
| - const wchar_t* eos = wmemchr(begin, kNull, end - begin);
|
| - EXPECT_NE(eos, end);
|
| - if (lstrcmpW(begin, L"START") == 0) {
|
| - begin = eos + 1;
|
| - EXPECT_TRUE(begin <= end);
|
| - eos = wmemchr(begin, kNull, end - begin);
|
| - EXPECT_NE(eos, end);
|
| -
|
| - // Get current directory.
|
| - const wchar_t* cur_dir = begin;
|
| - begin = eos + 1;
|
| - EXPECT_TRUE(begin <= end);
|
| - eos = wmemchr(begin, kNull, end - begin);
|
| - // eos might be equal to end at this point.
|
| -
|
| - // Get command line.
|
| - std::wstring cmd_line(begin, static_cast<size_t>(end - begin));
|
| -
|
| - CommandLine parsed_command_line = CommandLine::FromString(cmd_line);
|
| - std::string channel_id = parsed_command_line.GetSwitchValueASCII(
|
| - switches::kAutomationClientChannelID);
|
| - EXPECT_FALSE(channel_id.empty());
|
| -
|
| - delegate_->OnConnectAutomationProviderToChannel(channel_id);
|
| - }
|
| - return TRUE;
|
| -}
|
|
|