Index: chrome/common/win_util.h |
=================================================================== |
--- chrome/common/win_util.h (revision 15686) |
+++ chrome/common/win_util.h (working copy) |
@@ -1,295 +0,0 @@ |
-// Copyright (c) 2006-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_COMMON_WIN_UTIL_H_ |
-#define CHROME_COMMON_WIN_UTIL_H_ |
- |
-#include <objbase.h> |
- |
-#include <string> |
-#include <vector> |
- |
-#include "app/gfx/chrome_font.h" |
-#include "base/fix_wp64.h" |
-#include "base/gfx/rect.h" |
-#include "base/scoped_handle.h" |
- |
-class FilePath; |
- |
-namespace win_util { |
- |
-// Import ScopedHandle and friends into this namespace for backwards |
-// compatibility. TODO(darin): clean this up! |
-using ::ScopedHandle; |
-using ::ScopedFindFileHandle; |
-using ::ScopedHDC; |
-using ::ScopedBitmap; |
-using ::ScopedHRGN; |
- |
-// Simple scoped memory releaser class for COM allocated memory. |
-// Example: |
-// CoMemReleaser<ITEMIDLIST> file_item; |
-// SHGetSomeInfo(&file_item, ...); |
-// ... |
-// return; <-- memory released |
-template<typename T> |
-class CoMemReleaser { |
- public: |
- explicit CoMemReleaser() : mem_ptr_(NULL) {} |
- |
- ~CoMemReleaser() { |
- if (mem_ptr_) |
- CoTaskMemFree(mem_ptr_); |
- } |
- |
- T** operator&() { |
- return &mem_ptr_; |
- } |
- |
- operator T*() { |
- return mem_ptr_; |
- } |
- |
- private: |
- T* mem_ptr_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CoMemReleaser); |
-}; |
- |
-// Initializes COM in the constructor (STA), and uninitializes COM in the |
-// destructor. |
-class ScopedCOMInitializer { |
- public: |
- ScopedCOMInitializer() : hr_(CoInitialize(NULL)) { |
- } |
- |
- ScopedCOMInitializer::~ScopedCOMInitializer() { |
- if (SUCCEEDED(hr_)) |
- CoUninitialize(); |
- } |
- |
- // Returns the error code from CoInitialize(NULL) |
- // (called in constructor) |
- inline HRESULT error_code() const { |
- return hr_; |
- } |
- |
- protected: |
- HRESULT hr_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(ScopedCOMInitializer); |
-}; |
- |
-// Creates a string interpretation of the time of day represented by the given |
-// SYSTEMTIME that's appropriate for the user's default locale. |
-// Format can be an empty string (for the default format), or a "format picture" |
-// as specified in the Windows documentation for GetTimeFormat(). |
-std::wstring FormatSystemTime(const SYSTEMTIME& time, |
- const std::wstring& format); |
- |
-// Creates a string interpretation of the date represented by the given |
-// SYSTEMTIME that's appropriate for the user's default locale. |
-// Format can be an empty string (for the default format), or a "format picture" |
-// as specified in the Windows documentation for GetDateFormat(). |
-std::wstring FormatSystemDate(const SYSTEMTIME& date, |
- const std::wstring& format); |
- |
-// Returns the long path name given a short path name. A short path name |
-// is a path that follows the 8.3 convention and has ~x in it. If the |
-// path is already a long path name, the function returns the current |
-// path without modification. |
-bool ConvertToLongPath(const std::wstring& short_path, std::wstring* long_path); |
- |
-// Returns true if the current point is close enough to the origin point in |
-// space and time that it would be considered a double click. |
-bool IsDoubleClick(const POINT& origin, |
- const POINT& current, |
- DWORD elapsed_time); |
- |
-// Returns true if the current point is far enough from the origin that it |
-// would be considered a drag. |
-bool IsDrag(const POINT& origin, const POINT& current); |
- |
-// Returns true if we are on Windows Vista and composition is enabled |
-bool ShouldUseVistaFrame(); |
- |
-// Open or run a file via the Windows shell. In the event that there is no |
-// default application registered for the file specified by 'full_path', |
-// ask the user, via the Windows "Open With" dialog, for an application to use |
-// if 'ask_for_app' is true. |
-// Returns 'true' on successful open, 'false' otherwise. |
-bool OpenItemViaShell(const FilePath& full_path, bool ask_for_app); |
- |
-// The download manager now writes the alternate data stream with the |
-// zone on all downloads. This function is equivalent to OpenItemViaShell |
-// without showing the zone warning dialog. |
-bool OpenItemViaShellNoZoneCheck(const FilePath& full_path, |
- bool ask_for_app); |
- |
-// Ask the user, via the Windows "Open With" dialog, for an application to use |
-// to open the file specified by 'full_path'. |
-// Returns 'true' on successful open, 'false' otherwise. |
-bool OpenItemWithExternalApp(const std::wstring& full_path); |
- |
-// Set up a filter for a Save/Open dialog, which will consist of |file_ext| file |
-// extensions (internally separated by semicolons), |ext_desc| as the text |
-// descriptions of the |file_ext| types (optional), and (optionally) the default |
-// 'All Files' view. The purpose of the filter is to show only files of a |
-// particular type in a Windows Save/Open dialog box. The resulting filter is |
-// returned. The filters created here are: |
-// 1. only files that have 'file_ext' as their extension |
-// 2. all files (only added if 'include_all_files' is true) |
-// Example: |
-// file_ext: { "*.txt", "*.htm;*.html" } |
-// ext_desc: { "Text Document" } |
-// returned: "Text Document\0*.txt\0HTML Document\0*.htm;*.html\0" |
-// "All Files\0*.*\0\0" (in one big string) |
-// If a description is not provided for a file extension, it will be retrieved |
-// from the registry. If the file extension does not exist in the registry, it |
-// will be omitted from the filter, as it is likely a bogus extension. |
-std::wstring FormatFilterForExtensions( |
- const std::vector<std::wstring>& file_ext, |
- const std::vector<std::wstring>& ext_desc, |
- bool include_all_files); |
- |
-// Prompt the user for location to save a file. 'suggested_name' is a full path |
-// that gives the dialog box a hint as to how to initialize itself. |
-// For example, a 'suggested_name' of: |
-// "C:\Documents and Settings\jojo\My Documents\picture.png" |
-// will start the dialog in the "C:\Documents and Settings\jojo\My Documents\" |
-// directory, and filter for .png file types. |
-// 'owner' is the window to which the dialog box is modal, NULL for a modeless |
-// dialog box. |
-// On success, returns true and 'final_name' contains the full path of the file |
-// that the user chose. On error, returns false, and 'final_name' is not |
-// modified. |
-// NOTE: DO NOT CALL THIS FUNCTION DIRECTLY! Instead use the helper objects in |
-// browser/shell_dialogs.cc to do this asynchronously on a different |
-// thread so that the app isn't jankified if the Windows shell dialog |
-// takes a long time to display. |
-bool SaveFileAs(HWND owner, |
- const std::wstring& suggested_name, |
- std::wstring* final_name); |
- |
-// Prompt the user for location to save a file. |
-// Callers should provide the filter string, and also a filter index. |
-// The parameter |index| indicates the initial index of filter description |
-// and filter pattern for the dialog box. If |index| is zero or greater than |
-// the number of total filter types, the system uses the first filter in the |
-// |filter| buffer. |index| is used to specify the initial selected extension, |
-// and when done contains the extension the user chose. The parameter |
-// |final_name| returns the file name which contains the drive designator, |
-// path, file name, and extension of the user selected file name. |def_ext| is |
-// the default extension to give to the file if the user did not enter an |
-// extension. If |ignore_suggested_ext| is true, any file extension contained in |
-// |suggested_name| will not be used to generate the file name. This is useful |
-// in the case of saving web pages, where we know the extension type already and |
-// where |suggested_name| may contain a '.' character as a valid part of the |
-// name, thus confusing our extension detection code. |
-bool SaveFileAsWithFilter(HWND owner, |
- const std::wstring& suggested_name, |
- const std::wstring& filter, |
- const std::wstring& def_ext, |
- bool ignore_suggested_ext, |
- unsigned* index, |
- std::wstring* final_name); |
- |
-// This function takes the output of a SaveAs dialog: a filename, a filter and |
-// the extension originally suggested to the user (shown in the dialog box) and |
-// returns back the filename with the appropriate extension tacked on. For |
-// example, if you pass in 'foo' as filename with filter '*.jpg' this function |
-// will return 'foo.jpg'. It respects MIME types, so if you pass in 'foo.jpeg' |
-// with filer '*.jpg' it will return 'foo.jpeg' (will not append .jpg). |
-// |filename| should contain the filename selected in the SaveAs dialog box and |
-// may include the path, |filter_selected| should be '*.something', for example |
-// '*.*' or it can be blank (which is treated as *.*). |suggested_ext| should |
-// contain the extension without the dot (.) in front, for example 'jpg'. |
-std::wstring AppendExtensionIfNeeded(const std::wstring& filename, |
- const std::wstring& filter_selected, |
- const std::wstring& suggested_ext); |
- |
-// If the window does not fit on the default monitor, it is moved and possibly |
-// resized appropriately. |
-void AdjustWindowToFit(HWND hwnd); |
- |
-// Sizes the window to have a client or window size (depending on the value of |
-// |pref_is_client|) of pref, then centers the window over parent, ensuring the |
-// window fits on screen. |
-void CenterAndSizeWindow(HWND parent, HWND window, const SIZE& pref, |
- bool pref_is_client); |
- |
-// Returns true if edge |edge| (one of ABE_LEFT, TOP, RIGHT, or BOTTOM) of |
-// monitor |monitor| has an auto-hiding taskbar that's always-on-top. |
-bool EdgeHasTopmostAutoHideTaskbar(UINT edge, HMONITOR monitor); |
- |
-// Duplicates a section handle from another process to the current process. |
-// Returns the new valid handle if the function succeed. NULL otherwise. |
-HANDLE GetSectionFromProcess(HANDLE section, HANDLE process, bool read_only); |
- |
-// Returns true if the specified window is the current active top window or one |
-// of its children. |
-bool DoesWindowBelongToActiveWindow(HWND window); |
- |
-// Adjusts the value of |child_rect| if necessary to ensure that it is |
-// completely visible within |parent_rect|. |
-void EnsureRectIsVisibleInRect(const gfx::Rect& parent_rect, |
- gfx::Rect* child_rect, |
- int padding); |
- |
-// Ensures that the child window stays within the boundaries of the parent |
-// before setting its bounds. If |parent_window| is NULL, the bounds of the |
-// parent are assumed to be the bounds of the monitor that |child_window| is |
-// nearest to. If |child_window| isn't visible yet and |insert_after_window| |
-// is non-NULL and visible, the monitor |insert_after_window| is on is used |
-// as the parent bounds instead. |
-void SetChildBounds(HWND child_window, HWND parent_window, |
- HWND insert_after_window, const gfx::Rect& bounds, |
- int padding, unsigned long flags); |
- |
-// Returns the bounds for the monitor that contains the largest area of |
-// intersection with the specified rectangle. |
-gfx::Rect GetMonitorBoundsForRect(const gfx::Rect& rect); |
- |
-// Returns true if the virtual key code is a digit coming from the numeric |
-// keypad (with or without NumLock on). |extended_key| should be set to the |
-// extended key flag specified in the WM_KEYDOWN/UP where the |key_code| |
-// originated. |
-bool IsNumPadDigit(int key_code, bool extended_key); |
- |
-// Grabs a snapshot of the designated window and stores a PNG representation |
-// into a byte vector. |
-void GrabWindowSnapshot(HWND window_handle, |
- std::vector<unsigned char>* png_representation); |
- |
-// Returns whether the specified window is the current active window. |
-bool IsWindowActive(HWND hwnd); |
- |
-// Returns whether the specified file name is a reserved name on windows. |
-// This includes names like "com2.zip" (which correspond to devices) and |
-// desktop.ini and thumbs.db which have special meaning to the windows shell. |
-bool IsReservedName(const std::wstring& filename); |
- |
-// Returns whether the specified extension is automatically integrated into the |
-// windows shell. |
-bool IsShellIntegratedExtension(const std::wstring& eextension); |
- |
-// A wrapper around Windows' MessageBox function. Using a Chrome specific |
-// MessageBox function allows us to control certain RTL locale flags so that |
-// callers don't have to worry about adding these flags when running in a |
-// right-to-left locale. |
-int MessageBox(HWND hwnd, |
- const std::wstring& text, |
- const std::wstring& caption, |
- UINT flags); |
- |
-// Returns the system set window title font. |
-ChromeFont GetWindowTitleFont(); |
- |
-// The thickness of an auto-hide taskbar in pixels. |
-extern const int kAutoHideTaskbarThicknessPx; |
- |
-} // namespace win_util |
- |
-#endif // CHROME_COMMON_WIN_UTIL_H_ |