summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/background/background_mode_manager_gtk.cc9
-rw-r--r--chrome/browser/shell_integration.h34
-rw-r--r--chrome/browser/shell_integration_linux.cc61
-rw-r--r--chrome/browser/shell_integration_linux.h30
-rw-r--r--chrome/browser/shell_integration_unittest.cc17
-rw-r--r--chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc9
-rw-r--r--chrome/browser/ui/gtk/unity_service.cc6
-rw-r--r--chrome/browser/web_applications/web_app_linux.cc4
8 files changed, 82 insertions, 88 deletions
diff --git a/chrome/browser/background/background_mode_manager_gtk.cc b/chrome/browser/background/background_mode_manager_gtk.cc
index 26f2b1e..890b437 100644
--- a/chrome/browser/background/background_mode_manager_gtk.cc
+++ b/chrome/browser/background/background_mode_manager_gtk.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
@@ -12,7 +12,7 @@
#include "base/logging.h"
#include "base/nix/xdg_util.h"
#include "chrome/browser/background/background_mode_manager.h"
-#include "chrome/browser/shell_integration.h"
+#include "chrome/browser/shell_integration_linux.h"
#include "chrome/browser/ui/gtk/gtk_util.h"
#include "chrome/common/auto_start_linux.h"
#include "chrome/common/chrome_switches.h"
@@ -40,7 +40,7 @@ void EnableLaunchOnStartupCallback() {
std::string command_line = wrapper_script +
" --" + switches::kNoStartupWindow;
if (!AutoStart::AddApplication(
- ShellIntegration::GetDesktopName(environment.get()),
+ ShellIntegrationLinux::GetDesktopName(environment.get()),
version_info->Name(),
command_line,
false)) {
@@ -50,7 +50,8 @@ void EnableLaunchOnStartupCallback() {
void DisableLaunchOnStartupCallback() {
scoped_ptr<base::Environment> environment(base::Environment::Create());
- if (!AutoStart::Remove(ShellIntegration::GetDesktopName(environment.get()))) {
+ if (!AutoStart::Remove(
+ ShellIntegrationLinux::GetDesktopName(environment.get()))) {
NOTREACHED() << "Failed to deregister launch on login.";
}
}
diff --git a/chrome/browser/shell_integration.h b/chrome/browser/shell_integration.h
index a96e16e..5571da1 100644
--- a/chrome/browser/shell_integration.h
+++ b/chrome/browser/shell_integration.h
@@ -17,12 +17,6 @@
class CommandLine;
-#if defined(USE_X11)
-namespace base {
-class Environment;
-}
-#endif
-
class ShellIntegration {
public:
// Sets Chrome as the default browser (only for the current user). Returns
@@ -119,34 +113,6 @@ class ShellIntegration {
const FilePath& user_data_dir,
const FilePath& extension_path);
-#if defined(USE_X11)
- // Returns filename of the desktop shortcut used to launch the browser.
- static std::string GetDesktopName(base::Environment* env);
-
- static bool GetDesktopShortcutTemplate(base::Environment* env,
- std::string* output);
-
- // Returns filename for .desktop file based on |url|, sanitized for security.
- static FilePath GetDesktopShortcutFilename(const GURL& url);
-
- // Returns contents for .desktop file based on |template_contents|, |url|
- // and |title|. The |template_contents| should be contents of .desktop file
- // used to launch Chrome.
- static std::string GetDesktopFileContents(
- const std::string& template_contents,
- const std::string& app_name,
- const GURL& url,
- const std::string& extension_id,
- const bool is_platform_app,
- const FilePath& web_app_path,
- const FilePath& extension_path,
- const string16& title,
- const std::string& icon_name);
-
- static bool CreateDesktopShortcut(const ShortcutInfo& shortcut_info,
- const std::string& shortcut_template);
-#endif // defined(USE_X11)
-
#if defined(OS_WIN)
// Generates Win7 app id for given app name and profile path. The returned app
// id is in the format of "|app_name|[.<profile_id>]". "profile_id" is
diff --git a/chrome/browser/shell_integration_linux.cc b/chrome/browser/shell_integration_linux.cc
index 4f9cace..f58b7e6 100644
--- a/chrome/browser/shell_integration_linux.cc
+++ b/chrome/browser/shell_integration_linux.cc
@@ -232,21 +232,6 @@ const char kXdgSettingsDefaultSchemeHandler[] = "default-url-scheme-handler";
} // namespace
-// static
-std::string ShellIntegration::GetDesktopName(base::Environment* env) {
-#if defined(GOOGLE_CHROME_BUILD)
- return "google-chrome.desktop";
-#else // CHROMIUM_BUILD
- // Allow $CHROME_DESKTOP to override the built-in value, so that development
- // versions can set themselves as the default without interfering with
- // non-official, packaged versions using the built-in value.
- std::string name;
- if (env->GetVar("CHROME_DESKTOP", &name) && !name.empty())
- return name;
- return "chromium-browser.desktop";
-#endif
-}
-
namespace {
// Utility function to get the path to the version of a script shipped with
@@ -307,7 +292,7 @@ bool SetDefaultWebClient(const std::string& protocol) {
argv.push_back(kXdgSettingsDefaultSchemeHandler);
argv.push_back(protocol);
}
- argv.push_back(ShellIntegration::GetDesktopName(env.get()));
+ argv.push_back(ShellIntegrationLinux::GetDesktopName(env.get()));
int exit_code;
bool ran_ok = LaunchXdgUtility(argv, &exit_code);
@@ -338,7 +323,7 @@ ShellIntegration::DefaultWebClientState GetIsDefaultWebClient(
argv.push_back(kXdgSettingsDefaultSchemeHandler);
argv.push_back(protocol);
}
- argv.push_back(ShellIntegration::GetDesktopName(env.get()));
+ argv.push_back(ShellIntegrationLinux::GetDesktopName(env.get()));
std::string reply;
int success_code;
@@ -402,9 +387,24 @@ bool ShellIntegration::IsFirefoxDefaultBrowser() {
return browser.find("irefox") != std::string::npos;
}
-// static
-bool ShellIntegration::GetDesktopShortcutTemplate(
- base::Environment* env, std::string* output) {
+namespace ShellIntegrationLinux {
+
+std::string GetDesktopName(base::Environment* env) {
+#if defined(GOOGLE_CHROME_BUILD)
+ return "google-chrome.desktop";
+#else // CHROMIUM_BUILD
+ // Allow $CHROME_DESKTOP to override the built-in value, so that development
+ // versions can set themselves as the default without interfering with
+ // non-official, packaged versions using the built-in value.
+ std::string name;
+ if (env->GetVar("CHROME_DESKTOP", &name) && !name.empty())
+ return name;
+ return "chromium-browser.desktop";
+#endif
+}
+
+bool GetDesktopShortcutTemplate(base::Environment* env,
+ std::string* output) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
std::vector<FilePath> search_paths;
@@ -446,8 +446,7 @@ bool ShellIntegration::GetDesktopShortcutTemplate(
return false;
}
-// static
-FilePath ShellIntegration::GetDesktopShortcutFilename(const GURL& url) {
+FilePath GetDesktopShortcutFilename(const GURL& url) {
// Use a prefix, because xdg-desktop-menu requires it.
std::string filename =
std::string(chrome::kBrowserProcessExecutableName) + "-" + url.spec();
@@ -471,8 +470,7 @@ FilePath ShellIntegration::GetDesktopShortcutFilename(const GURL& url) {
return FilePath();
}
-// static
-std::string ShellIntegration::GetDesktopFileContents(
+std::string GetDesktopFileContents(
const std::string& template_contents,
const std::string& app_name,
const GURL& url,
@@ -590,9 +588,8 @@ std::string ShellIntegration::GetDesktopFileContents(
return output_buffer;
}
-// static
-bool ShellIntegration::CreateDesktopShortcut(
- const ShortcutInfo& shortcut_info,
+bool CreateDesktopShortcut(
+ const ShellIntegration::ShortcutInfo& shortcut_info,
const std::string& shortcut_template) {
DCHECK(!shortcut_info.is_platform_app);
DCHECK(shortcut_info.extension_id.empty());
@@ -601,24 +598,22 @@ bool ShellIntegration::CreateDesktopShortcut(
shortcut_info, FilePath(), shortcut_template);
}
-namespace ShellIntegrationLinux {
-
bool CreateDesktopShortcutForChromeApp(
const ShellIntegration::ShortcutInfo& shortcut_info,
const FilePath& web_app_path,
const std::string& shortcut_template) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- FilePath shortcut_filename = ShellIntegration::GetDesktopShortcutFilename(
- shortcut_info.url);
+ FilePath shortcut_filename =
+ ShellIntegrationLinux::GetDesktopShortcutFilename(shortcut_info.url);
if (shortcut_filename.empty())
return false;
- std::string icon_name = CreateShortcutIcon(shortcut_info, shortcut_filename);
+ std::string icon_name =CreateShortcutIcon(shortcut_info, shortcut_filename);
std::string app_name =
web_app::GenerateApplicationNameFromInfo(shortcut_info);
- std::string contents = ShellIntegration::GetDesktopFileContents(
+ std::string contents = ShellIntegrationLinux::GetDesktopFileContents(
shortcut_template,
app_name,
shortcut_info.url,
diff --git a/chrome/browser/shell_integration_linux.h b/chrome/browser/shell_integration_linux.h
index 2e839a5..c3a3a59 100644
--- a/chrome/browser/shell_integration_linux.h
+++ b/chrome/browser/shell_integration_linux.h
@@ -11,9 +11,39 @@
#include "base/basictypes.h"
#include "base/file_path.h"
#include "chrome/browser/shell_integration.h"
+#include "googleurl/src/gurl.h"
+
+namespace base {
+class Environment;
+}
namespace ShellIntegrationLinux {
+// Returns filename of the desktop shortcut used to launch the browser.
+std::string GetDesktopName(base::Environment* env);
+
+bool GetDesktopShortcutTemplate(base::Environment* env,
+ std::string* output);
+
+// Returns filename for .desktop file based on |url|, sanitized for security.
+FilePath GetDesktopShortcutFilename(const GURL& url);
+
+// Returns contents for .desktop file based on |template_contents|, |url|
+// and |title|. The |template_contents| should be contents of .desktop file
+// used to launch Chrome.
+std::string GetDesktopFileContents(const std::string& template_contents,
+ const std::string& app_name,
+ const GURL& url,
+ const std::string& extension_id,
+ const bool is_platform_app,
+ const FilePath& web_app_path,
+ const FilePath& extension_path,
+ const string16& title,
+ const std::string& icon_name);
+
+bool CreateDesktopShortcut(const ShellIntegration::ShortcutInfo& shortcut_info,
+ const std::string& shortcut_template);
+
bool CreateDesktopShortcutForChromeApp(
const ShellIntegration::ShortcutInfo& shortcut_info,
const FilePath& web_app_path,
diff --git a/chrome/browser/shell_integration_unittest.cc b/chrome/browser/shell_integration_unittest.cc
index b026431..51f9183 100644
--- a/chrome/browser/shell_integration_unittest.cc
+++ b/chrome/browser/shell_integration_unittest.cc
@@ -24,6 +24,7 @@
#include "chrome/installer/util/browser_distribution.h"
#elif defined(OS_POSIX) && !defined(OS_MACOSX)
#include "base/environment.h"
+#include "chrome/browser/shell_integration_linux.h"
#endif
#define FPL FILE_PATH_LITERAL
@@ -92,8 +93,8 @@ TEST(ShellIntegrationTest, GetDesktopShortcutTemplate) {
temp_dir.path().AppendASCII(kTemplateFilename),
kTestData1, strlen(kTestData1)));
std::string contents;
- ASSERT_TRUE(ShellIntegration::GetDesktopShortcutTemplate(&env,
- &contents));
+ ASSERT_TRUE(ShellIntegrationLinux::GetDesktopShortcutTemplate(&env,
+ &contents));
EXPECT_EQ(kTestData1, contents);
}
@@ -110,8 +111,8 @@ TEST(ShellIntegrationTest, GetDesktopShortcutTemplate) {
.AppendASCII(kTemplateFilename),
kTestData2, strlen(kTestData2)));
std::string contents;
- ASSERT_TRUE(ShellIntegration::GetDesktopShortcutTemplate(&env,
- &contents));
+ ASSERT_TRUE(ShellIntegrationLinux::GetDesktopShortcutTemplate(&env,
+ &contents));
EXPECT_EQ(kTestData2, contents);
}
@@ -132,8 +133,8 @@ TEST(ShellIntegrationTest, GetDesktopShortcutTemplate) {
.AppendASCII(kTemplateFilename),
kTestData2, strlen(kTestData2)));
std::string contents;
- ASSERT_TRUE(ShellIntegration::GetDesktopShortcutTemplate(&env,
- &contents));
+ ASSERT_TRUE(ShellIntegrationLinux::GetDesktopShortcutTemplate(&env,
+ &contents));
EXPECT_EQ(kTestData1, contents);
}
}
@@ -155,7 +156,7 @@ TEST(ShellIntegrationTest, GetDesktopShortcutFilename) {
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); i++) {
EXPECT_EQ(std::string(chrome::kBrowserProcessExecutableName) + "-" +
test_cases[i].path,
- ShellIntegration::GetDesktopShortcutFilename(
+ ShellIntegrationLinux::GetDesktopShortcutFilename(
GURL(test_cases[i].url)).value()) <<
" while testing " << test_cases[i].url;
}
@@ -352,7 +353,7 @@ TEST(ShellIntegrationTest, GetDesktopFileContents) {
SCOPED_TRACE(i);
EXPECT_EQ(
test_cases[i].expected_output,
- ShellIntegration::GetDesktopFileContents(
+ ShellIntegrationLinux::GetDesktopFileContents(
test_cases[i].template_contents,
web_app::GenerateApplicationNameFromURL(GURL(test_cases[i].url)),
GURL(test_cases[i].url),
diff --git a/chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc b/chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc
index 0955b8a..1ae913b 100644
--- a/chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc
+++ b/chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc
@@ -11,6 +11,7 @@
#include "base/utf_string_conversions.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/shell_integration.h"
+#include "chrome/browser/shell_integration_linux.h"
#include "chrome/browser/ui/gtk/gtk_util.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
#include "chrome/browser/ui/web_applications/web_app_ui.h"
@@ -219,10 +220,10 @@ void CreateApplicationShortcutsDialogGtk::CreateDesktopShortcut(
scoped_ptr<base::Environment> env(base::Environment::Create());
std::string shortcut_template;
- if (ShellIntegration::GetDesktopShortcutTemplate(env.get(),
- &shortcut_template)) {
- ShellIntegration::CreateDesktopShortcut(shortcut_info,
- shortcut_template);
+ if (ShellIntegrationLinux::GetDesktopShortcutTemplate(env.get(),
+ &shortcut_template)) {
+ ShellIntegrationLinux::CreateDesktopShortcut(shortcut_info,
+ shortcut_template);
Release();
} else {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
diff --git a/chrome/browser/ui/gtk/unity_service.cc b/chrome/browser/ui/gtk/unity_service.cc
index 7adc936..79f8de2 100644
--- a/chrome/browser/ui/gtk/unity_service.cc
+++ b/chrome/browser/ui/gtk/unity_service.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
@@ -9,7 +9,7 @@
#include "base/environment.h"
#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/shell_integration.h"
+#include "chrome/browser/shell_integration_linux.h"
// Unity data typedefs.
typedef struct _UnityInspector UnityInspector;
@@ -77,7 +77,7 @@ void EnsureMethodsLoaded() {
dlsym(unity_lib, "unity_launcher_entry_get_for_desktop_id"));
if (entry_get_for_desktop_id) {
scoped_ptr<base::Environment> env(base::Environment::Create());
- std::string desktop_id = ShellIntegration::GetDesktopName(env.get());
+ std::string desktop_id = ShellIntegrationLinux::GetDesktopName(env.get());
chrome_entry = entry_get_for_desktop_id(desktop_id.c_str());
entry_set_count =
diff --git a/chrome/browser/web_applications/web_app_linux.cc b/chrome/browser/web_applications/web_app_linux.cc
index 4bfb301..85efd43 100644
--- a/chrome/browser/web_applications/web_app_linux.cc
+++ b/chrome/browser/web_applications/web_app_linux.cc
@@ -21,8 +21,8 @@ bool CreatePlatformShortcut(
scoped_ptr<base::Environment> env(base::Environment::Create());
std::string shortcut_template;
- if (!ShellIntegration::GetDesktopShortcutTemplate(env.get(),
- &shortcut_template)) {
+ if (!ShellIntegrationLinux::GetDesktopShortcutTemplate(env.get(),
+ &shortcut_template)) {
return false;
}
return ShellIntegrationLinux::CreateDesktopShortcutForChromeApp(