Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(768)

Unified Diff: ui/base/win/open_file_name_win.cc

Issue 860873002: Continue deleting code in ui/. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 2015 Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/win/open_file_name_win.h ('k') | ui/base/win/open_file_name_win_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/win/open_file_name_win.cc
diff --git a/ui/base/win/open_file_name_win.cc b/ui/base/win/open_file_name_win.cc
deleted file mode 100644
index 3914fa5cfae43951dc8ace26a60bf10565df7345..0000000000000000000000000000000000000000
--- a/ui/base/win/open_file_name_win.cc
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright (c) 2014 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 "ui/base/win/open_file_name_win.h"
-
-#include "base/files/file_path.h"
-#include "base/strings/string_util.h"
-#include "base/win/windows_version.h"
-
-namespace ui {
-namespace win {
-
-namespace {
-
-// Ensures that the Save As dialog is on-screen.
-UINT_PTR CALLBACK SaveAsDialogHook(HWND dialog, UINT message,
- WPARAM wparam, LPARAM lparam) {
- static const UINT kPrivateMessage = 0x2F3F;
- switch (message) {
- case WM_INITDIALOG: {
- // Do nothing here. Just post a message to defer actual processing.
- ::PostMessage(dialog, kPrivateMessage, 0, 0);
- return TRUE;
- }
- case kPrivateMessage: {
- // The dialog box is the parent of the current handle.
- HWND real_dialog = ::GetParent(dialog);
-
- // Retrieve the final size.
- RECT dialog_rect;
- ::GetWindowRect(real_dialog, &dialog_rect);
-
- // Verify that the upper left corner is visible.
- POINT point = { dialog_rect.left, dialog_rect.top };
- HMONITOR monitor1 = ::MonitorFromPoint(point, MONITOR_DEFAULTTONULL);
- point.x = dialog_rect.right;
- point.y = dialog_rect.bottom;
-
- // Verify that the lower right corner is visible.
- HMONITOR monitor2 = ::MonitorFromPoint(point, MONITOR_DEFAULTTONULL);
- if (monitor1 && monitor2)
- return 0;
-
- // Some part of the dialog box is not visible, fix it by moving is to the
- // client rect position of the browser window.
- HWND parent_window = ::GetParent(real_dialog);
- if (!parent_window)
- return 0;
- WINDOWINFO parent_info;
- parent_info.cbSize = sizeof(WINDOWINFO);
- ::GetWindowInfo(parent_window, &parent_info);
- ::SetWindowPos(
- real_dialog,
- NULL,
- parent_info.rcClient.left,
- parent_info.rcClient.top,
- 0,
- 0, // Size.
- SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
-
- return 0;
- }
- }
- return 0;
-}
-
-} // namespace
-
-OpenFileName::OpenFileName(HWND parent_window, DWORD flags) {
- ::ZeroMemory(&openfilename_, sizeof(openfilename_));
- openfilename_.lStructSize = sizeof(openfilename_);
-
- // According to http://support.microsoft.com/?scid=kb;en-us;222003&x=8&y=12,
- // The lpstrFile Buffer MUST be NULL Terminated.
- filename_buffer_[0] = 0;
- openfilename_.lpstrFile = filename_buffer_;
- openfilename_.nMaxFile = arraysize(filename_buffer_);
-
- openfilename_.Flags = flags;
- openfilename_.hwndOwner = parent_window;
-}
-
-OpenFileName::~OpenFileName() {
-}
-
-void OpenFileName::SetFilters(
- const std::vector<Tuple2<base::string16, base::string16> >& filters) {
- openfilename_.lpstrFilter = NULL;
- filter_buffer_.clear();
- if (filters.empty())
- return;
- for (std::vector<Tuple2<base::string16, base::string16> >::const_iterator
- it = filters.begin();
- it != filters.end();
- ++it) {
- filter_buffer_.append(it->a);
- filter_buffer_.push_back(0);
- filter_buffer_.append(it->b);
- filter_buffer_.push_back(0);
- }
- filter_buffer_.push_back(0);
- openfilename_.lpstrFilter = filter_buffer_.c_str();
-}
-
-void OpenFileName::SetInitialSelection(const base::FilePath& initial_directory,
- const base::FilePath& initial_filename) {
- // First reset to the default case.
- // According to http://support.microsoft.com/?scid=kb;en-us;222003&x=8&y=12,
- // The lpstrFile Buffer MUST be NULL Terminated.
- filename_buffer_[0] = 0;
- openfilename_.lpstrFile = filename_buffer_;
- openfilename_.nMaxFile = arraysize(filename_buffer_);
- openfilename_.lpstrInitialDir = NULL;
- initial_directory_buffer_.clear();
-
- if (initial_directory.empty())
- return;
-
- initial_directory_buffer_ = initial_directory.value();
- openfilename_.lpstrInitialDir = initial_directory_buffer_.c_str();
-
- if (initial_filename.empty())
- return;
-
- // The filename is ignored if no initial directory is supplied.
- base::wcslcpy(filename_buffer_,
- initial_filename.value().c_str(),
- arraysize(filename_buffer_));
-}
-
-void OpenFileName::MaybeInstallWindowPositionHookForSaveAsOnXP() {
- if (base::win::GetVersion() >= base::win::VERSION_VISTA)
- return;
-
- openfilename_.Flags |= OFN_ENABLEHOOK;
- DCHECK(!openfilename_.lpfnHook);
- openfilename_.lpfnHook = &SaveAsDialogHook;
-}
-
-base::FilePath OpenFileName::GetSingleResult() {
- base::FilePath directory;
- std::vector<base::FilePath> filenames;
- GetResult(&directory, &filenames);
- if (filenames.size() != 1)
- return base::FilePath();
- return directory.Append(filenames[0]);
-}
-
-void OpenFileName::GetResult(base::FilePath* directory,
- std::vector<base::FilePath>* filenames) {
- DCHECK(filenames->empty());
- const wchar_t* selection = openfilename_.lpstrFile;
- // The return value of |openfilename_.lpstrFile| is dependent on the
- // value of the Multi-Select flag within |openfilename_|. If the flag is
- // not set the return value will be a single null-terminated wide string.
- // If it is set it will be more than one null-terminated wide string, itself
- // terminated by an empty null-terminated wide string.
- if (openfilename_.Flags & OFN_ALLOWMULTISELECT) {
- while (*selection) { // Empty string indicates end of list.
- filenames->push_back(base::FilePath(selection));
- // Skip over filename and null-terminator.
- selection += filenames->back().value().length() + 1;
- }
- } else {
- filenames->push_back(base::FilePath(selection));
- }
- if (filenames->size() == 1) {
- // When there is one file, it contains the path and filename.
- *directory = (*filenames)[0].DirName();
- (*filenames)[0] = (*filenames)[0].BaseName();
- } else if (filenames->size() > 1) {
- // Otherwise, the first string is the path, and the remainder are
- // filenames.
- *directory = (*filenames)[0];
- filenames->erase(filenames->begin());
- }
-}
-
-// static
-void OpenFileName::SetResult(const base::FilePath& directory,
- const std::vector<base::FilePath>& filenames,
- OPENFILENAME* openfilename) {
- base::string16 filename_value;
- if (filenames.size() == 1) {
- filename_value = directory.Append(filenames[0]).value();
- } else {
- filename_value = directory.value();
- filename_value.push_back(0);
- for (std::vector<base::FilePath>::const_iterator it = filenames.begin();
- it != filenames.end();
- ++it) {
- filename_value.append(it->value());
- filename_value.push_back(0);
- }
- }
- if (filename_value.size() + 1 < openfilename->nMaxFile) {
- // Because the result has embedded nulls, we must memcpy.
- memcpy(openfilename->lpstrFile,
- filename_value.c_str(),
- (filename_value.size() + 1) * sizeof(filename_value[0]));
- } else if (openfilename->nMaxFile) {
- openfilename->lpstrFile[0] = 0;
- }
-}
-
-// static
-std::vector<Tuple2<base::string16, base::string16> > OpenFileName::GetFilters(
- const OPENFILENAME* openfilename) {
- std::vector<Tuple2<base::string16, base::string16> > filters;
-
- const base::char16* display_string = openfilename->lpstrFilter;
- if (!display_string)
- return filters;
-
- while (*display_string) {
- const base::char16* display_string_end = display_string;
- while (*display_string_end)
- ++display_string_end;
- const base::char16* pattern = display_string_end + 1;
- const base::char16* pattern_end = pattern;
- while (*pattern_end)
- ++pattern_end;
- filters.push_back(
- MakeTuple(base::string16(display_string, display_string_end),
- base::string16(pattern, pattern_end)));
- display_string = pattern_end + 1;
- }
-
- return filters;
-}
-
-} // namespace win
-} // namespace ui
« no previous file with comments | « ui/base/win/open_file_name_win.h ('k') | ui/base/win/open_file_name_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698