Index: win8/metro_driver/winrt_utils.cc |
diff --git a/win8/metro_driver/winrt_utils.cc b/win8/metro_driver/winrt_utils.cc |
deleted file mode 100644 |
index 4c7dc36e517b6079f80acd5b065ae706354ce336..0000000000000000000000000000000000000000 |
--- a/win8/metro_driver/winrt_utils.cc |
+++ /dev/null |
@@ -1,226 +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 "stdafx.h" |
-#include "winrt_utils.h" |
- |
-#include <shlobj.h> |
- |
-#include "base/files/file_path.h" |
-#include "base/logging.h" |
-#include "base/win/scoped_com_initializer.h" |
-#include "base/win/scoped_comptr.h" |
-#include "chrome/installer/util/browser_distribution.h" |
-#include "chrome/installer/util/install_util.h" |
- |
-void CheckHR(HRESULT hr, const char* message) { |
- if (FAILED(hr)) { |
- if (message) |
- PLOG(DFATAL) << message << ", hr = " << std::hex << hr; |
- else |
- PLOG(DFATAL) << "COM ERROR" << ", hr = " << std::hex << hr; |
- } |
-} |
- |
-HSTRING MakeHString(const base::string16& str) { |
- HSTRING hstr; |
- if (FAILED(::WindowsCreateString(str.c_str(), static_cast<UINT32>(str.size()), |
- &hstr))) { |
- PLOG(DFATAL) << "Hstring creation failed"; |
- } |
- return hstr; |
-} |
- |
-base::string16 MakeStdWString(HSTRING hstring) { |
- const wchar_t* str; |
- UINT32 size = 0; |
- str = ::WindowsGetStringRawBuffer(hstring, &size); |
- if (!size) |
- return base::string16(); |
- return base::string16(str, size); |
-} |
- |
-namespace { |
- |
-#define IMPLEMENT_CREATE_PROPERTY(Name, Type) \ |
-HRESULT Create ## Name ## Property(Type value, \ |
- winfoundtn::IPropertyValue** prop) { \ |
- mswr::ComPtr<winfoundtn::IPropertyValueStatics> property_value_statics; \ |
- HRESULT hr = winrt_utils::CreateActivationFactory( \ |
- RuntimeClass_Windows_Foundation_PropertyValue, \ |
- property_value_statics.GetAddressOf()); \ |
- CheckHR(hr, "Can't create IPropertyValueStatics"); \ |
- hr = property_value_statics->Create ## Name ( \ |
- value, \ |
- reinterpret_cast<IInspectable**>(prop)); \ |
- CheckHR(hr, "Failed to create Property"); \ |
- return hr; \ |
-} |
- |
-#define COMPARE_ATOMIC_PROPERTY_VALUES(Name, Type) \ |
- Type lhs_value; \ |
- hr = lhs->Get ## Name (&lhs_value); \ |
- CheckHR(hr, "Can't get value for lhs"); \ |
- Type rhs_value; \ |
- hr = rhs->Get ## Name (&rhs_value); \ |
- CheckHR(hr, "Can't get value for rhs"); \ |
- if (lhs_value < rhs_value) \ |
- *result = -1; \ |
- else if (lhs_value > rhs_value) \ |
- *result = 1; \ |
- else \ |
- *result = 0; \ |
- hr = S_OK |
- |
-} // namespace |
- |
-namespace winrt_utils { |
- |
-IMPLEMENT_CREATE_PROPERTY(String, HSTRING); |
-IMPLEMENT_CREATE_PROPERTY(Int16, INT16); |
-IMPLEMENT_CREATE_PROPERTY(Int32, INT32); |
-IMPLEMENT_CREATE_PROPERTY(Int64, INT64); |
-IMPLEMENT_CREATE_PROPERTY(UInt8, UINT8); |
-IMPLEMENT_CREATE_PROPERTY(UInt16, UINT16); |
-IMPLEMENT_CREATE_PROPERTY(UInt32, UINT32); |
-IMPLEMENT_CREATE_PROPERTY(UInt64, UINT64); |
- |
-HRESULT CompareProperties(winfoundtn::IPropertyValue* lhs, |
- winfoundtn::IPropertyValue* rhs, |
- INT32* result) { |
- if (result == nullptr) { |
- PLOG(DFATAL) << "Invalid argument to CompareProperties."; |
- return E_INVALIDARG; |
- } |
- |
- if (lhs == rhs) { |
- *result = 0; |
- return S_OK; |
- } |
- |
- winfoundtn::PropertyType lhs_property_type; |
- HRESULT hr = lhs->get_Type(&lhs_property_type); |
- if (FAILED(hr)) { |
- PLOG(DFATAL) << "Can't get property type for lhs, hr=" << std::hex << hr; |
- } |
- |
- winfoundtn::PropertyType rhs_property_type; |
- hr = rhs->get_Type(&rhs_property_type); |
- CheckHR(hr, "Can't get property type for rhs"); |
- |
- if (lhs_property_type != rhs_property_type) |
- return E_INVALIDARG; |
- |
- switch (lhs_property_type) { |
- case winfoundtn::PropertyType::PropertyType_String: { |
- mswrw::HString lhs_string; |
- hr = lhs->GetString(lhs_string.GetAddressOf()); |
- CheckHR(hr, "Can't get string for lhs"); |
- |
- mswrw::HString rhs_string; |
- hr = rhs->GetString(rhs_string.GetAddressOf()); |
- CheckHR(hr, "Can't get string for rhs"); |
- |
- hr = WindowsCompareStringOrdinal( |
- lhs_string.Get(), rhs_string.Get(), result); |
- break; |
- } |
- case winfoundtn::PropertyType::PropertyType_Char16: { |
- COMPARE_ATOMIC_PROPERTY_VALUES(Char16, wchar_t); |
- break; |
- } |
- case winfoundtn::PropertyType::PropertyType_Double: { |
- COMPARE_ATOMIC_PROPERTY_VALUES(Double, double); |
- break; |
- } |
- case winfoundtn::PropertyType::PropertyType_Int16: { |
- COMPARE_ATOMIC_PROPERTY_VALUES(Int16, INT16); |
- break; |
- } |
- case winfoundtn::PropertyType::PropertyType_Int32: { |
- COMPARE_ATOMIC_PROPERTY_VALUES(Int32, INT32); |
- break; |
- } |
- case winfoundtn::PropertyType::PropertyType_Int64: { |
- COMPARE_ATOMIC_PROPERTY_VALUES(Int64, INT64); |
- break; |
- } |
- case winfoundtn::PropertyType::PropertyType_UInt8: { |
- COMPARE_ATOMIC_PROPERTY_VALUES(UInt8, UINT8); |
- break; |
- } |
- case winfoundtn::PropertyType::PropertyType_UInt16: { |
- COMPARE_ATOMIC_PROPERTY_VALUES(UInt16, UINT16); |
- break; |
- } |
- case winfoundtn::PropertyType::PropertyType_UInt32: { |
- COMPARE_ATOMIC_PROPERTY_VALUES(UInt32, UINT32); |
- break; |
- } |
- case winfoundtn::PropertyType::PropertyType_UInt64: { |
- COMPARE_ATOMIC_PROPERTY_VALUES(UInt64, UINT64); |
- break; |
- } |
- default: { |
- hr = E_NOTIMPL; |
- } |
- } |
- return hr; |
-} |
- |
-bool GetArgumentsFromShortcut(const base::FilePath& shortcut, |
- base::string16* arguments) { |
- HRESULT result; |
- base::win::ScopedComPtr<IShellLink> i_shell_link; |
- bool is_resolved = false; |
- |
- |
- base::win::ScopedCOMInitializer sta_com_initializer; |
- |
- // Get pointer to the IShellLink interface |
- result = i_shell_link.CreateInstance(CLSID_ShellLink, NULL, |
- CLSCTX_INPROC_SERVER); |
- if (SUCCEEDED(result)) { |
- base::win::ScopedComPtr<IPersistFile> persist; |
- // Query IShellLink for the IPersistFile interface |
- result = persist.QueryFrom(i_shell_link.get()); |
- if (SUCCEEDED(result)) { |
- WCHAR temp_arguments[MAX_PATH]; |
- // Load the shell link |
- result = persist->Load(shortcut.value().c_str(), STGM_READ); |
- if (SUCCEEDED(result)) { |
- result = i_shell_link->GetArguments(temp_arguments, MAX_PATH); |
- *arguments = temp_arguments; |
- is_resolved = true; |
- } |
- } |
- } |
- |
- return is_resolved; |
-} |
- |
-base::string16 ReadArgumentsFromPinnedTaskbarShortcut() { |
- wchar_t path_buffer[MAX_PATH] = {}; |
- |
- if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, |
- SHGFP_TYPE_CURRENT, path_buffer))) { |
- base::FilePath shortcut(path_buffer); |
- shortcut = shortcut.Append( |
- L"Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar"); |
- |
- BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
- base::string16 link_name = dist->GetShortcutName( |
- BrowserDistribution::SHORTCUT_CHROME) + installer::kLnkExt; |
- shortcut = shortcut.Append(link_name); |
- |
- base::string16 arguments; |
- if (GetArgumentsFromShortcut(shortcut, &arguments)) { |
- return arguments; |
- } |
- } |
- |
- return L""; |
-} |
- |
-} // namespace winrt_utils |