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

Unified Diff: chrome/browser/views/external_protocol_dialog.cc

Issue 194002: Add external protocol dialog for Linux.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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/views/external_protocol_dialog.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/views/external_protocol_dialog.cc
===================================================================
--- chrome/browser/views/external_protocol_dialog.cc (revision 25293)
+++ chrome/browser/views/external_protocol_dialog.cc (working copy)
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 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.
@@ -12,8 +12,8 @@
#include "base/thread.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/external_protocol_handler.h"
+#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tab_contents/tab_util.h"
-#include "chrome/browser/tab_contents/tab_contents.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
#include "views/controls/message_box_view.h"
@@ -26,18 +26,26 @@
} // namespace
///////////////////////////////////////////////////////////////////////////////
-// ExternalProtocolDialog, public:
+// ExternalProtocolHandler
// static
-void ExternalProtocolDialog::RunExternalProtocolDialog(
- const GURL& url, const std::wstring& command, int render_process_host_id,
- int routing_id) {
+void ExternalProtocolHandler::RunExternalProtocolDialog(
+ const GURL& url, int render_process_host_id, int routing_id) {
+ std::wstring command =
+ ExternalProtocolDialog::GetApplicationForProtocol(url);
+ if (command.empty()) {
+ // ShellExecute won't do anything. Don't bother warning the user.
+ return;
+ }
TabContents* tab_contents = tab_util::GetTabContentsByID(
render_process_host_id, routing_id);
ExternalProtocolDialog* handler =
new ExternalProtocolDialog(tab_contents, url, command);
}
+///////////////////////////////////////////////////////////////////////////////
+// ExternalProtocolDialog
+
ExternalProtocolDialog::~ExternalProtocolDialog() {
}
@@ -72,16 +80,8 @@
UMA_HISTOGRAM_LONG_TIMES("clickjacking.launch_url",
base::Time::Now() - creation_time_);
- MessageLoop* io_loop = g_browser_process->io_thread()->message_loop();
- if (io_loop == NULL) {
- // Returning true closes the dialog.
- return true;
- }
-
- // Attempt to launch the application on the IO loop.
- io_loop->PostTask(FROM_HERE,
- NewRunnableFunction(
- &ExternalProtocolHandler::LaunchUrlWithoutSecurityCheck, url_));
+ ExternalProtocolHandler::LaunchUrlWithoutSecurityCheck(url_);
+ // Returning true closes the dialog.
return true;
}
@@ -123,7 +123,7 @@
views::Window::CreateChromeWindow(root_hwnd, gfx::Rect(), this)->Show();
}
-/* static */
+// static
std::wstring ExternalProtocolDialog::GetApplicationForProtocol(
const GURL& url) {
std::wstring url_spec = ASCIIToWide(url.possibly_invalid_spec());
« no previous file with comments | « chrome/browser/views/external_protocol_dialog.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698