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

Unified Diff: chrome/browser/platform_util_chromeos.cc

Issue 352393002: Be explicit about target type in platform_util::OpenItem() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Catch up with changes to JSONStringValueSerializer and address CrOS comment Created 5 years, 9 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 | « chrome/browser/platform_util_android.cc ('k') | chrome/browser/platform_util_internal.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/platform_util_chromeos.cc
diff --git a/chrome/browser/platform_util_chromeos.cc b/chrome/browser/platform_util_chromeos.cc
index aad0b73602f9396699b2ae1b17ebdf69b738a162..8d463bf65689decaa77480ebd86f9a28fea5851d 100644
--- a/chrome/browser/platform_util_chromeos.cc
+++ b/chrome/browser/platform_util_chromeos.cc
@@ -4,34 +4,99 @@
#include "chrome/browser/platform_util.h"
+#include "base/bind.h"
+#include "base/files/file_path.h"
#include "chrome/browser/chromeos/file_manager/open_util.h"
+#include "chrome/browser/platform_util_internal.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_navigator.h"
+#include "chrome/browser/ui/browser_window.h"
+#include "chrome/browser/ui/simple_message_box.h"
+#include "chrome/grit/generated_resources.h"
#include "content/public/browser/browser_thread.h"
+#include "ui/base/l10n/l10n_util.h"
#include "url/gurl.h"
using content::BrowserThread;
+namespace platform_util {
+
namespace {
const char kGmailComposeUrl[] =
"https://mail.google.com/mail/?extsrc=mailto&url=";
+void ShowWarningOnOpenOperationResult(Profile* profile,
+ const base::FilePath& path,
+ OpenOperationResult result) {
+ int message_id = IDS_FILE_BROWSER_ERROR_VIEWING_FILE;
+ switch (result) {
+ case OPEN_SUCCEEDED:
+ return;
+
+ case OPEN_FAILED_PATH_NOT_FOUND:
+ message_id = IDS_FILE_BROWSER_ERROR_UNRESOLVABLE_FILE;
+ break;
+
+ case OPEN_FAILED_INVALID_TYPE:
+ return;
+
+ case OPEN_FAILED_NO_HANLDER_FOR_FILE_TYPE:
+ if (path.MatchesExtension(FILE_PATH_LITERAL(".dmg")))
+ message_id = IDS_FILE_BROWSER_ERROR_VIEWING_FILE_FOR_DMG;
+ else if (path.MatchesExtension(FILE_PATH_LITERAL(".exe")) ||
+ path.MatchesExtension(FILE_PATH_LITERAL(".msi")))
+ message_id = IDS_FILE_BROWSER_ERROR_VIEWING_FILE_FOR_EXECUTABLE;
+ else
+ message_id = IDS_FILE_BROWSER_ERROR_VIEWING_FILE;
+ break;
+
+ case OPEN_FAILED_FILE_ERROR:
+ message_id = IDS_FILE_BROWSER_ERROR_VIEWING_FILE;
+ break;
+ }
+
+ Browser* browser =
+ chrome::FindTabbedBrowser(profile, false, chrome::HOST_DESKTOP_TYPE_ASH);
+ chrome::ShowMessageBox(
+ browser ? browser->window()->GetNativeWindow() : nullptr,
+ l10n_util::GetStringFUTF16(IDS_FILE_BROWSER_ERROR_VIEWING_FILE_TITLE,
+ path.BaseName().AsUTF16Unsafe()),
+ l10n_util::GetStringUTF16(message_id), chrome::MESSAGE_BOX_TYPE_WARNING);
+}
+
} // namespace
-namespace platform_util {
+namespace internal {
+
+void DisableShellOperationsForTesting() {
+ file_manager::util::DisableShellOperationsForTesting();
+}
+
+} // namespace internal
void ShowItemInFolder(Profile* profile, const base::FilePath& full_path) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- file_manager::util::ShowItemInFolder(profile, full_path);
+ file_manager::util::ShowItemInFolder(
+ profile, full_path,
+ base::Bind(&ShowWarningOnOpenOperationResult, profile, full_path));
}
-void OpenItem(Profile* profile, const base::FilePath& full_path) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- file_manager::util::OpenItem(profile, full_path);
+void OpenItem(Profile* profile,
+ const base::FilePath& full_path,
+ OpenItemType item_type,
+ const OpenOperationCallback& callback) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ file_manager::util::OpenItem(
+ profile, full_path, item_type,
+ callback.is_null()
+ ? base::Bind(&ShowWarningOnOpenOperationResult, profile, full_path)
+ : callback);
}
void OpenExternal(Profile* profile, const GURL& url) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
// This code should be obsolete since we have default handlers in ChromeOS
// which should handle this. However - there are two things which make it
« no previous file with comments | « chrome/browser/platform_util_android.cc ('k') | chrome/browser/platform_util_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698