summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/ui/views/app_list/win/app_list_service_win.cc10
-rw-r--r--ui/base/ime/remote_input_method_win.cc10
-rw-r--r--win8/metro_driver/ime/text_service.cc18
-rw-r--r--win8/metro_driver/metro_driver_win7.cc2
4 files changed, 27 insertions, 13 deletions
diff --git a/chrome/browser/ui/views/app_list/win/app_list_service_win.cc b/chrome/browser/ui/views/app_list/win/app_list_service_win.cc
index bdbc152..3350ef4 100644
--- a/chrome/browser/ui/views/app_list/win/app_list_service_win.cc
+++ b/chrome/browser/ui/views/app_list/win/app_list_service_win.cc
@@ -38,6 +38,7 @@
#include "chrome/installer/util/browser_distribution.h"
#include "content/public/browser/browser_thread.h"
#include "ui/app_list/views/app_list_view.h"
+#include "ui/base/ui_base_switches.h"
#include "ui/base/win/shell.h"
#if defined(GOOGLE_CHROME_BUILD)
@@ -49,15 +50,20 @@
// static
AppListService* AppListService::Get(chrome::HostDesktopType desktop_type) {
- if (desktop_type == chrome::HOST_DESKTOP_TYPE_ASH)
+ if (desktop_type == chrome::HOST_DESKTOP_TYPE_ASH) {
+ DCHECK(CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kViewerConnect));
return AppListServiceAsh::GetInstance();
+ }
return AppListServiceWin::GetInstance();
}
// static
void AppListService::InitAll(Profile* initial_profile) {
- AppListServiceAsh::GetInstance()->Init(initial_profile);
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kViewerConnect))
+ AppListServiceAsh::GetInstance()->Init(initial_profile);
+
AppListServiceWin::GetInstance()->Init(initial_profile);
}
diff --git a/ui/base/ime/remote_input_method_win.cc b/ui/base/ime/remote_input_method_win.cc
index b01a39c..0b75c07 100644
--- a/ui/base/ime/remote_input_method_win.cc
+++ b/ui/base/ime/remote_input_method_win.cc
@@ -4,6 +4,7 @@
#include "ui/base/ime/remote_input_method_win.h"
+#include "base/command_line.h"
#include "base/observer_list.h"
#include "base/strings/utf_string_conversions.h"
#include "base/win/metro.h"
@@ -14,6 +15,7 @@
#include "ui/base/ime/remote_input_method_delegate_win.h"
#include "ui/base/ime/text_input_client.h"
#include "ui/base/ime/win/tsf_input_scope.h"
+#include "ui/base/ui_base_switches.h"
#include "ui/events/event.h"
#include "ui/events/event_utils.h"
#include "ui/gfx/rect.h"
@@ -364,6 +366,10 @@ class RemoteInputMethodWin : public InputMethod,
} // namespace
bool IsRemoteInputMethodWinRequired(gfx::AcceleratedWidget widget) {
+ // If the remote input method is already registered then don't do it again.
+ if (ui::g_public_interface_ && ui::g_private_interface_)
+ return false;
+
DWORD process_id = 0;
if (GetWindowThreadProcessId(widget, &process_id) == 0)
return false;
@@ -371,7 +377,9 @@ bool IsRemoteInputMethodWinRequired(gfx::AcceleratedWidget widget) {
PROCESS_QUERY_LIMITED_INFORMATION, FALSE, process_id));
if (!process_handle.IsValid())
return false;
- return base::win::IsProcessImmersive(process_handle.Get());
+ return base::win::IsProcessImmersive(process_handle.Get()) ||
+ CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kViewerConnect);
}
RemoteInputMethodPrivateWin::RemoteInputMethodPrivateWin() {}
diff --git a/win8/metro_driver/ime/text_service.cc b/win8/metro_driver/ime/text_service.cc
index 986288e..cb9421a 100644
--- a/win8/metro_driver/ime/text_service.cc
+++ b/win8/metro_driver/ime/text_service.cc
@@ -92,7 +92,7 @@ namespace {
// TF_SENTENCEMODE_PHRASEPREDICT to emulate IMM32 behavior. This value is
// managed per thread, thus setting this value at once is sufficient. This
// value never affects non-Japanese IMEs.
-bool InitializeSentenceMode(ITfThreadMgr2* thread_manager,
+bool InitializeSentenceMode(ITfThreadMgr* thread_manager,
TfClientId client_id) {
base::win::ScopedComPtr<ITfCompartmentMgr> thread_compartment_manager;
HRESULT hr = thread_compartment_manager.QueryFrom(thread_manager);
@@ -224,7 +224,7 @@ class DocumentBinding {
}
static scoped_ptr<DocumentBinding> Create(
- ITfThreadMgr2* thread_manager,
+ ITfThreadMgr* thread_manager,
TfClientId client_id,
const std::vector<InputScope>& input_scopes,
HWND window_handle,
@@ -232,7 +232,7 @@ class DocumentBinding {
base::win::ScopedComPtr<ITfDocumentMgr> document_manager;
HRESULT hr = thread_manager->CreateDocumentMgr(document_manager.Receive());
if (FAILED(hr)) {
- LOG(ERROR) << "ITfThreadMgr2::CreateDocumentMgr failed. hr = " << hr;
+ LOG(ERROR) << "ITfThreadMgr::CreateDocumentMgr failed. hr = " << hr;
return scoped_ptr<DocumentBinding>();
}
@@ -316,7 +316,7 @@ class DocumentBinding {
class TextServiceImpl : public TextService,
public TextStoreDelegate {
public:
- TextServiceImpl(ITfThreadMgr2* thread_manager,
+ TextServiceImpl(ITfThreadMgr* thread_manager,
TfClientId client_id,
HWND window_handle,
TextServiceDelegate* delegate)
@@ -368,7 +368,7 @@ class TextServiceImpl : public TextService,
}
HRESULT hr = thread_manager_->SetFocus(document_manager);
if (FAILED(hr)) {
- LOG(ERROR) << "ITfThreadMgr2::SetFocus failed. hr = " << hr;
+ LOG(ERROR) << "ITfThreadMgr::SetFocus failed. hr = " << hr;
return;
}
}
@@ -446,7 +446,7 @@ class TextServiceImpl : public TextService,
HWND window_handle_;
TextServiceDelegate* delegate_;
scoped_ptr<DocumentBinding> current_document_;
- base::win::ScopedComPtr<ITfThreadMgr2> thread_manager_;
+ base::win::ScopedComPtr<ITfThreadMgr> thread_manager_;
// A vector of InputScope enumeration, which represents the document type of
// the focused text field. Note that in our IPC message protocol, an empty
@@ -466,7 +466,7 @@ scoped_ptr<TextService>
CreateTextService(TextServiceDelegate* delegate, HWND window_handle) {
if (!delegate)
return scoped_ptr<TextService>();
- base::win::ScopedComPtr<ITfThreadMgr2> thread_manager;
+ base::win::ScopedComPtr<ITfThreadMgr> thread_manager;
HRESULT hr = thread_manager.CreateInstance(CLSID_TF_ThreadMgr);
if (FAILED(hr)) {
LOG(ERROR) << "Failed to create instance of CLSID_TF_ThreadMgr. hr = "
@@ -474,9 +474,9 @@ CreateTextService(TextServiceDelegate* delegate, HWND window_handle) {
return scoped_ptr<TextService>();
}
TfClientId client_id = TF_CLIENTID_NULL;
- hr = thread_manager->ActivateEx(&client_id, 0);
+ hr = thread_manager->Activate(&client_id);
if (FAILED(hr)) {
- LOG(ERROR) << "ITfThreadMgr2::ActivateEx failed. hr = " << hr;
+ LOG(ERROR) << "ITfThreadMgr::Activate failed. hr = " << hr;
return scoped_ptr<TextService>();
}
if (!InitializeSentenceMode(thread_manager, client_id)) {
diff --git a/win8/metro_driver/metro_driver_win7.cc b/win8/metro_driver/metro_driver_win7.cc
index 618cfb3..22d6034 100644
--- a/win8/metro_driver/metro_driver_win7.cc
+++ b/win8/metro_driver/metro_driver_win7.cc
@@ -1229,7 +1229,7 @@ class CoreApplicationWin7Emulation
mswr::ComPtr<winapp::Core::ICoreApplication> InitWindows7() {
- HRESULT hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
+ HRESULT hr = ::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (FAILED(hr))
CHECK(false);
return mswr::Make<CoreApplicationWin7Emulation>();