diff options
42 files changed, 381 insertions, 388 deletions
diff --git a/app/app_base.gypi b/app/app_base.gypi index ccf194e..c69593b 100644 --- a/app/app_base.gypi +++ b/app/app_base.gypi @@ -49,6 +49,8 @@ 'gfx/gtk_util.h', 'gtk_dnd_util.cc', 'gtk_dnd_util.h', + 'gtk_util.cc', + 'gtk_util.h', ], }], ], @@ -158,6 +160,8 @@ 'gfx/text_elider.h', 'gtk_dnd_util.cc', 'gtk_dnd_util.h', + 'gtk_util.cc', + 'gtk_util.h', 'l10n_util.cc', 'l10n_util.h', 'l10n_util_mac.h', diff --git a/app/gtk_dnd_util.cc b/app/gtk_dnd_util.cc index 32c5150..4d8694d 100644 --- a/app/gtk_dnd_util.cc +++ b/app/gtk_dnd_util.cc @@ -11,8 +11,53 @@ static const int kBitsPerByte = 8; -// static -GdkAtom GtkDndUtil::GetAtomForTarget(int target) { +namespace { + +void AddTargetToList(GtkTargetList* targets, int target_code) { + switch (target_code) { + case gtk_dnd_util::TEXT_PLAIN: + gtk_target_list_add_text_targets(targets, gtk_dnd_util::TEXT_PLAIN); + break; + + case gtk_dnd_util::TEXT_URI_LIST: + gtk_target_list_add_uri_targets(targets, gtk_dnd_util::TEXT_URI_LIST); + break; + + case gtk_dnd_util::TEXT_HTML: + gtk_target_list_add( + targets, gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::TEXT_PLAIN), + 0, gtk_dnd_util::TEXT_HTML); + break; + + case gtk_dnd_util::NETSCAPE_URL: + gtk_target_list_add(targets, + gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::NETSCAPE_URL), + 0, gtk_dnd_util::NETSCAPE_URL); + break; + + case gtk_dnd_util::CHROME_TAB: + case gtk_dnd_util::CHROME_BOOKMARK_ITEM: + case gtk_dnd_util::CHROME_NAMED_URL: + gtk_target_list_add(targets, gtk_dnd_util::GetAtomForTarget(target_code), + GTK_TARGET_SAME_APP, target_code); + break; + + case gtk_dnd_util::DIRECT_SAVE_FILE: + gtk_target_list_add(targets, + gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::DIRECT_SAVE_FILE), + 0, gtk_dnd_util::DIRECT_SAVE_FILE); + break; + + default: + NOTREACHED() << " Unexpected target code: " << target_code; + } +} + +} // namespace + +namespace gtk_dnd_util { + +GdkAtom GetAtomForTarget(int target) { switch (target) { case CHROME_TAB: static GdkAtom tab_atom = gdk_atom_intern( @@ -66,8 +111,7 @@ GdkAtom GtkDndUtil::GetAtomForTarget(int target) { return NULL; } -// static -GtkTargetList* GtkDndUtil::GetTargetListFromCodeMask(int code_mask) { +GtkTargetList* GetTargetListFromCodeMask(int code_mask) { GtkTargetList* targets = gtk_target_list_new(NULL, 0); for (size_t i = 1; i < INVALID_TARGET; i = i << 1) { @@ -81,16 +125,13 @@ GtkTargetList* GtkDndUtil::GetTargetListFromCodeMask(int code_mask) { return targets; } -// static -void GtkDndUtil::SetSourceTargetListFromCodeMask(GtkWidget* source, - int code_mask) { +void SetSourceTargetListFromCodeMask(GtkWidget* source, int code_mask) { GtkTargetList* targets = GetTargetListFromCodeMask(code_mask); gtk_drag_source_set_target_list(source, targets); gtk_target_list_unref(targets); } -// static -void GtkDndUtil::SetDestTargetList(GtkWidget* dest, const int* target_codes) { +void SetDestTargetList(GtkWidget* dest, const int* target_codes) { GtkTargetList* targets = gtk_target_list_new(NULL, 0); for (size_t i = 0; target_codes[i] != -1; ++i) { @@ -101,48 +142,10 @@ void GtkDndUtil::SetDestTargetList(GtkWidget* dest, const int* target_codes) { gtk_target_list_unref(targets); } -// static -void GtkDndUtil::AddTargetToList(GtkTargetList* targets, int target_code) { - switch (target_code) { - case TEXT_PLAIN: - gtk_target_list_add_text_targets(targets, TEXT_PLAIN); - break; - - case TEXT_URI_LIST: - gtk_target_list_add_uri_targets(targets, TEXT_URI_LIST); - break; - - case TEXT_HTML: - gtk_target_list_add(targets, GetAtomForTarget(TEXT_PLAIN), 0, TEXT_HTML); - break; - - case NETSCAPE_URL: - gtk_target_list_add(targets, GetAtomForTarget(NETSCAPE_URL), 0, - NETSCAPE_URL); - break; - - case CHROME_TAB: - case CHROME_BOOKMARK_ITEM: - case CHROME_NAMED_URL: - gtk_target_list_add(targets, GetAtomForTarget(target_code), - GTK_TARGET_SAME_APP, target_code); - break; - - case DIRECT_SAVE_FILE: - gtk_target_list_add(targets, GetAtomForTarget(DIRECT_SAVE_FILE), 0, - DIRECT_SAVE_FILE); - break; - - default: - NOTREACHED() << " Unexpected target code: " << target_code; - } -} - -// static -void GtkDndUtil::WriteURLWithName(GtkSelectionData* selection_data, - const GURL& url, - const string16& title, - int type) { +void WriteURLWithName(GtkSelectionData* selection_data, + const GURL& url, + const string16& title, + int type) { switch (type) { case TEXT_PLAIN: { gtk_selection_data_set_text(selection_data, url.spec().c_str(), @@ -163,7 +166,7 @@ void GtkDndUtil::WriteURLWithName(GtkSelectionData* selection_data, pickle.WriteString(url.spec()); gtk_selection_data_set( selection_data, - GetAtomForTarget(GtkDndUtil::CHROME_NAMED_URL), + GetAtomForTarget(gtk_dnd_util::CHROME_NAMED_URL), kBitsPerByte, reinterpret_cast<const guchar*>(pickle.data()), pickle.size()); @@ -187,10 +190,9 @@ void GtkDndUtil::WriteURLWithName(GtkSelectionData* selection_data, } } -// static -bool GtkDndUtil::ExtractNamedURL(GtkSelectionData* selection_data, - GURL* url, - string16* title) { +bool ExtractNamedURL(GtkSelectionData* selection_data, + GURL* url, + string16* title) { Pickle data(reinterpret_cast<char*>(selection_data->data), selection_data->length); void* iter = NULL; @@ -209,9 +211,7 @@ bool GtkDndUtil::ExtractNamedURL(GtkSelectionData* selection_data, return true; } -// static -bool GtkDndUtil::ExtractURIList(GtkSelectionData* selection_data, - std::vector<GURL>* urls) { +bool ExtractURIList(GtkSelectionData* selection_data, std::vector<GURL>* urls) { gchar** uris = gtk_selection_data_get_uris(selection_data); if (!uris) return false; @@ -225,3 +225,5 @@ bool GtkDndUtil::ExtractURIList(GtkSelectionData* selection_data, g_strfreev(uris); return true; } + +} // namespace gtk_dnd_util diff --git a/app/gtk_dnd_util.h b/app/gtk_dnd_util.h index 2c323e9..4471174 100644 --- a/app/gtk_dnd_util.h +++ b/app/gtk_dnd_util.h @@ -6,80 +6,77 @@ #define APP_GTK_DND_UTIL_H_ #include <gtk/gtk.h> + #include <vector> #include "base/string16.h" class GURL; -class GtkDndUtil { - public: - // Registry of all internal int codes for drag and drop. - enum { - // Intra-application types. - CHROME_TAB = 1 << 0, - CHROME_BOOKMARK_ITEM = 1 << 1, - CHROME_WEBDROP_FILE_CONTENTS = 1 << 2, - CHROME_NAMED_URL = 1 << 3, - - // Standard types. - TEXT_PLAIN = 1 << 4, - TEXT_URI_LIST = 1 << 5, - TEXT_HTML = 1 << 6, - - // Other types. NETSCAPE_URL is provided for compatibility with other - // apps. - NETSCAPE_URL = 1 << 7, - - // Used for drag-out download. - TEXT_PLAIN_NO_CHARSET = 1 << 8, - DIRECT_SAVE_FILE = 1 << 9, - - INVALID_TARGET = 1 << 10, - }; - - // Get the atom for a given target (of the above enum type). Will return NULL - // for non-custom targets, such as CHROME_TEXT_PLAIN. - static GdkAtom GetAtomForTarget(int target); - - // Creates a target list from the given mask. The mask should be an OR of - // CHROME_* values. The target list is returned with ref count 1; the caller - // is responsible for calling gtk_target_list_unref() when it is no longer - // needed. - // Since the MIME type for WEBDROP_FILE_CONTENTS depends on the file's - // contents, that flag is ignored by this function. It is the responsibility - // of the client code to do the right thing. - static GtkTargetList* GetTargetListFromCodeMask(int code_mask); - - // Set the drag target list for |source| with the target list that - // corresponds to |code_mask|. - static void SetSourceTargetListFromCodeMask(GtkWidget* source, int code_mask); - - // Set the accepted targets list for |dest|. The |target_codes| array should - // be sorted in preference order and should be terminated with -1. - static void SetDestTargetList(GtkWidget* dest, const int* target_codes); - - // Write a URL to the selection in the given type. - static void WriteURLWithName(GtkSelectionData* selection_data, - const GURL& url, - const string16& title, - int type); - - // Extracts data of type CHROME_NAMED_URL from |selection_data| into - // |url| and |title|. Returns true if the url/title were safely extracted - // and the url is valid. - static bool ExtractNamedURL(GtkSelectionData* selection_data, - GURL* url, - string16* title); - - // Extracts data of type TEXT_URI_LIST from |selection_data| into |urls|. - static bool ExtractURIList(GtkSelectionData* selection_data, - std::vector<GURL>* urls); - - private: - GtkDndUtil(); - - static void AddTargetToList(GtkTargetList* targets, int target_code); +namespace gtk_dnd_util { + +// Registry of all internal int codes for drag and drop. +enum { + // Intra-application types. + CHROME_TAB = 1 << 0, + CHROME_BOOKMARK_ITEM = 1 << 1, + CHROME_WEBDROP_FILE_CONTENTS = 1 << 2, + CHROME_NAMED_URL = 1 << 3, + + // Standard types. + TEXT_PLAIN = 1 << 4, + TEXT_URI_LIST = 1 << 5, + TEXT_HTML = 1 << 6, + + // Other types. NETSCAPE_URL is provided for compatibility with other + // apps. + NETSCAPE_URL = 1 << 7, + + // Used for drag-out download. + TEXT_PLAIN_NO_CHARSET = 1 << 8, + DIRECT_SAVE_FILE = 1 << 9, + + INVALID_TARGET = 1 << 10, }; +// Get the atom for a given target (of the above enum type). Will return NULL +// for non-custom targets, such as CHROME_TEXT_PLAIN. +GdkAtom GetAtomForTarget(int target); + +// Creates a target list from the given mask. The mask should be an OR of +// CHROME_* values. The target list is returned with ref count 1; the caller +// is responsible for calling gtk_target_list_unref() when it is no longer +// needed. +// Since the MIME type for WEBDROP_FILE_CONTENTS depends on the file's +// contents, that flag is ignored by this function. It is the responsibility +// of the client code to do the right thing. +GtkTargetList* GetTargetListFromCodeMask(int code_mask); + +// Set the drag target list for |source| with the target list that +// corresponds to |code_mask|. +void SetSourceTargetListFromCodeMask(GtkWidget* source, int code_mask); + +// Set the accepted targets list for |dest|. The |target_codes| array should +// be sorted in preference order and should be terminated with -1. +void SetDestTargetList(GtkWidget* dest, const int* target_codes); + +// Write a URL to the selection in the given type. +void WriteURLWithName(GtkSelectionData* selection_data, + const GURL& url, + const string16& title, + int type); + +// Extracts data of type CHROME_NAMED_URL from |selection_data| into +// |url| and |title|. Returns true if the url/title were safely extracted +// and the url is valid. +bool ExtractNamedURL(GtkSelectionData* selection_data, + GURL* url, + string16* title); + +// Extracts data of type TEXT_URI_LIST from |selection_data| into |urls|. +bool ExtractURIList(GtkSelectionData* selection_data, + std::vector<GURL>* urls); + +} // namespace gtk_dnd_util + #endif // APP_GTK_DND_UTIL_H_ diff --git a/app/gtk_util.cc b/app/gtk_util.cc new file mode 100644 index 0000000..b2aab1a --- /dev/null +++ b/app/gtk_util.cc @@ -0,0 +1,66 @@ +// Copyright (c) 2010 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 "app/gtk_util.h" + +#include <gtk/gtk.h> + +#include "app/l10n_util.h" +#include "base/linux_util.h" +#include "base/logging.h" +#include "base/string_util.h" + +namespace gtk_util { + +void GetWidgetSizeFromResources( + GtkWidget* widget, int width_chars, int height_lines, + int* width, int* height) { + DCHECK(GTK_WIDGET_REALIZED(widget)) + << " widget must be realized to compute font metrics correctly"; + + double chars = 0; + if (width) + StringToDouble(l10n_util::GetStringUTF8(width_chars), &chars); + + double lines = 0; + if (height) + StringToDouble(l10n_util::GetStringUTF8(height_lines), &lines); + + GetWidgetSizeFromCharacters(widget, chars, lines, width, height); +} + +void GetWidgetSizeFromCharacters( + GtkWidget* widget, double width_chars, double height_lines, + int* width, int* height) { + DCHECK(GTK_WIDGET_REALIZED(widget)) + << " widget must be realized to compute font metrics correctly"; + PangoContext* context = gtk_widget_create_pango_context(widget); + PangoFontMetrics* metrics = pango_context_get_metrics(context, + widget->style->font_desc, pango_context_get_language(context)); + if (width) { + *width = static_cast<int>( + pango_font_metrics_get_approximate_char_width(metrics) * + width_chars / PANGO_SCALE); + } + if (height) { + *height = static_cast<int>( + (pango_font_metrics_get_ascent(metrics) + + pango_font_metrics_get_descent(metrics)) * + height_lines / PANGO_SCALE); + } + pango_font_metrics_unref(metrics); + g_object_unref(context); +} + +void ApplyMessageDialogQuirks(GtkWidget* dialog) { + if (gtk_window_get_modal(GTK_WINDOW(dialog))) { + // Work around a KDE 3 window manager bug. + scoped_ptr<base::EnvironmentVariableGetter> env( + base::EnvironmentVariableGetter::Create()); + if (base::DESKTOP_ENVIRONMENT_KDE3 == GetDesktopEnvironment(env.get())) + gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE); + } +} + +} // namespace gtk_util diff --git a/app/gtk_util.h b/app/gtk_util.h new file mode 100644 index 0000000..22ab7d2 --- /dev/null +++ b/app/gtk_util.h @@ -0,0 +1,34 @@ +// Copyright (c) 2010 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 APP_GTK_UTIL_H_ +#define APP_GTK_UTIL_H_ + +typedef struct _GtkWidget GtkWidget; + +namespace gtk_util { + +// Calculates the size of given widget based on the size specified in +// number of characters/lines (in locale specific resource file) and +// font metrics. +// NOTE: Make sure to realize |widget| before using this method, or a +// default font size will be used instead of the actual font size. +void GetWidgetSizeFromResources( + GtkWidget* widget, int width_chars, int height_lines, + int* width, int* height); + +// As above, but uses number of characters/lines directly rather than looking +// up a resource. +void GetWidgetSizeFromCharacters( + GtkWidget* widget, double width_chars, double height_lines, + int* width, int* height); + +// A helper function for gtk_message_dialog_new() to work around a KDE 3 +// window manager bugs. You should always call it after creating a dialog +// with gtk_message_dialog_new. +void ApplyMessageDialogQuirks(GtkWidget* dialog); + +} // namespace gtk_util + +#endif // APP_GTK_UTIL_H_ diff --git a/app/os_exchange_data_provider_gtk.cc b/app/os_exchange_data_provider_gtk.cc index db4c249..6cc3899b 100644 --- a/app/os_exchange_data_provider_gtk.cc +++ b/app/os_exchange_data_provider_gtk.cc @@ -54,7 +54,7 @@ GtkTargetList* OSExchangeDataProviderGtk::GetTargetList() const { gtk_target_list_add_uri_targets(targets, OSExchangeData::URL); gtk_target_list_add( targets, - GtkDndUtil::GetAtomForTarget(GtkDndUtil::CHROME_NAMED_URL), + gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::CHROME_NAMED_URL), 0, OSExchangeData::URL); } @@ -88,7 +88,7 @@ void OSExchangeDataProviderGtk::WriteFormatToSelection( pickle.WriteString(url_.spec()); gtk_selection_data_set( selection, - GtkDndUtil::GetAtomForTarget(GtkDndUtil::CHROME_NAMED_URL), + gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::CHROME_NAMED_URL), 8, reinterpret_cast<const guchar*>(pickle.data()), pickle.size()); diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc index 00f6755..8cadec5 100644 --- a/chrome/browser/browser_main.cc +++ b/chrome/browser/browser_main.cc @@ -109,6 +109,7 @@ #include "chrome/browser/rlz/rlz.h" #include "chrome/browser/views/user_data_dir_dialog.h" #include "chrome/common/env_vars.h" +#include "chrome/common/sandbox_policy.h" #include "chrome/installer/util/helper.h" #include "chrome/installer/util/install_util.h" #include "chrome/installer/util/shell_util.h" @@ -507,7 +508,7 @@ int BrowserMain(const MainFunctionParams& parameters) { sandbox::BrokerServices* broker_services = parameters.sandbox_info_.BrokerServices(); if (broker_services) { - browser_process->InitBrokerServices(broker_services); + sandbox::InitBrokerServices(broker_services); if (!parsed_command_line.HasSwitch(switches::kNoSandbox)) { bool use_winsta = !parsed_command_line.HasSwitch( switches::kDisableAltWinstation); diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h index efab8d7..136d3be 100644 --- a/chrome/browser/browser_process.h +++ b/chrome/browser/browser_process.h @@ -39,12 +39,6 @@ class Thread; class WaitableEvent; } -#if defined(OS_WIN) -namespace sandbox { -class BrokerServices; -} -#endif // defined(OS_WIN) - namespace printing { class PrintJobManager; } @@ -109,11 +103,6 @@ class BrowserProcess { virtual base::Thread* background_x11_thread() = 0; #endif -#if defined(OS_WIN) - virtual sandbox::BrokerServices* broker_services() = 0; - virtual void InitBrokerServices(sandbox::BrokerServices*) = 0; -#endif // defined(OS_WIN) - virtual IconManager* icon_manager() = 0; virtual ThumbnailGenerator* GetThumbnailGenerator() = 0; diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc index 9e9e1b0..cf25fb6 100644 --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc @@ -67,10 +67,6 @@ BrowserProcessImpl::BrowserProcessImpl(const CommandLine& command_line) created_process_launcher_thread_(false), created_profile_manager_(false), created_local_state_(false), -#if defined(OS_WIN) - initialized_broker_services_(false), - broker_services_(NULL), -#endif // defined(OS_WIN) created_icon_manager_(false), created_debugger_wrapper_(false), created_devtools_manager_(false), @@ -379,16 +375,6 @@ void BrowserProcessImpl::CreateLocalState() { local_state_.reset(new PrefService(local_state_path)); } -#if defined(OS_WIN) -void BrowserProcessImpl::InitBrokerServices( - sandbox::BrokerServices* broker_services) { - DCHECK(!initialized_broker_services_ && broker_services_ == NULL); - broker_services->Init(); - initialized_broker_services_ = true; - broker_services_ = broker_services; -} -#endif // defined(OS_WIN) - void BrowserProcessImpl::CreateIconManager() { DCHECK(!created_icon_manager_ && icon_manager_.get() == NULL); created_icon_manager_ = true; diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h index 118400e..d6d870b 100644 --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h @@ -21,10 +21,6 @@ #include "chrome/browser/tab_contents/thumbnail_generator.h" #include "ipc/ipc_message.h" -#if defined(OS_WIN) -#include "sandbox/src/sandbox.h" -#endif - class CommandLine; class FilePath; class NotificationService; @@ -103,17 +99,6 @@ class BrowserProcessImpl : public BrowserProcess, public NonThreadSafe { return local_state_.get(); } -#if defined(OS_WIN) - virtual sandbox::BrokerServices* broker_services() { - // TODO(abarth): DCHECK(CalledOnValidThread()); - // See <http://b/1287166>. - if (!initialized_broker_services_) - return NULL; - return broker_services_; - } - void InitBrokerServices(sandbox::BrokerServices* broker_services); -#endif // defined(OS_WIN) - virtual DebuggerWrapper* debugger_wrapper() { DCHECK(CalledOnValidThread()); if (!created_debugger_wrapper_) @@ -276,11 +261,6 @@ class BrowserProcessImpl : public BrowserProcess, public NonThreadSafe { bool created_local_state_; scoped_ptr<PrefService> local_state_; -#if defined(OS_WIN) - bool initialized_broker_services_; - sandbox::BrokerServices* broker_services_; -#endif // defined(OS_WIN) - bool created_icon_manager_; scoped_ptr<IconManager> icon_manager_; diff --git a/chrome/browser/cookie_modal_dialog_gtk.cc b/chrome/browser/cookie_modal_dialog_gtk.cc index 54ce2e2..4ff08f6 100644 --- a/chrome/browser/cookie_modal_dialog_gtk.cc +++ b/chrome/browser/cookie_modal_dialog_gtk.cc @@ -4,6 +4,7 @@ #include "chrome/browser/cookie_modal_dialog.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "base/logging.h" #include "base/string_util.h" diff --git a/chrome/browser/gtk/bookmark_bar_gtk.cc b/chrome/browser/gtk/bookmark_bar_gtk.cc index 19fe0b2..1105bf9b 100644 --- a/chrome/browser/gtk/bookmark_bar_gtk.cc +++ b/chrome/browser/gtk/bookmark_bar_gtk.cc @@ -78,10 +78,10 @@ const double kTopBorderColor[] = { 222.0 / 255.0, 234.0 / 255.0, 248.0 / 255.0 }; // The targets accepted by the toolbar and folder buttons for DnD. -const int kDestTargetList[] = { GtkDndUtil::CHROME_BOOKMARK_ITEM, - GtkDndUtil::CHROME_NAMED_URL, - GtkDndUtil::TEXT_URI_LIST, - GtkDndUtil::TEXT_PLAIN, -1 }; +const int kDestTargetList[] = { gtk_dnd_util::CHROME_BOOKMARK_ITEM, + gtk_dnd_util::CHROME_NAMED_URL, + gtk_dnd_util::TEXT_URI_LIST, + gtk_dnd_util::TEXT_PLAIN, -1 }; // Acceptable drag actions for the bookmark bar drag destinations. const GdkDragAction kDragAction = @@ -218,7 +218,7 @@ void BookmarkBarGtk::Init(Profile* profile) { gtk_drag_dest_set(instructions_, GtkDestDefaults(GTK_DEST_DEFAULT_DROP | GTK_DEST_DEFAULT_MOTION), NULL, 0, kDragAction); - GtkDndUtil::SetDestTargetList(instructions_, kDestTargetList); + gtk_dnd_util::SetDestTargetList(instructions_, kDestTargetList); g_signal_connect(instructions_, "drag-data-received", G_CALLBACK(&OnDragReceived), this); @@ -245,7 +245,7 @@ void BookmarkBarGtk::Init(Profile* profile) { gtk_drag_dest_set(bookmark_toolbar_.get(), GTK_DEST_DEFAULT_DROP, NULL, 0, kDragAction); - GtkDndUtil::SetDestTargetList(bookmark_toolbar_.get(), kDestTargetList); + gtk_dnd_util::SetDestTargetList(bookmark_toolbar_.get(), kDestTargetList); g_signal_connect(bookmark_toolbar_.get(), "drag-motion", G_CALLBACK(&OnToolbarDragMotion), this); g_signal_connect(bookmark_toolbar_.get(), "drag-leave", @@ -837,13 +837,13 @@ GtkWidget* BookmarkBarGtk::CreateBookmarkButton(const BookmarkNode* node) { // The tool item is also a source for dragging gtk_drag_source_set(button, GDK_BUTTON1_MASK, NULL, 0, static_cast<GdkDragAction>(GDK_ACTION_MOVE | GDK_ACTION_COPY)); - int target_mask = GtkDndUtil::CHROME_BOOKMARK_ITEM; + int target_mask = gtk_dnd_util::CHROME_BOOKMARK_ITEM; if (node->is_url()) { - target_mask |= GtkDndUtil::TEXT_URI_LIST | - GtkDndUtil::TEXT_PLAIN | - GtkDndUtil::NETSCAPE_URL; + target_mask |= gtk_dnd_util::TEXT_URI_LIST | + gtk_dnd_util::TEXT_PLAIN | + gtk_dnd_util::NETSCAPE_URL; } - GtkDndUtil::SetSourceTargetListFromCodeMask(button, target_mask); + gtk_dnd_util::SetSourceTargetListFromCodeMask(button, target_mask); g_signal_connect(button, "drag-begin", G_CALLBACK(&OnButtonDragBegin), this); g_signal_connect(button, "drag-end", @@ -884,7 +884,7 @@ GtkToolItem* BookmarkBarGtk::CreateBookmarkToolItem(const BookmarkNode* node) { void BookmarkBarGtk::ConnectFolderButtonEvents(GtkWidget* widget) { gtk_drag_dest_set(widget, GTK_DEST_DEFAULT_ALL, NULL, 0, kDragAction); - GtkDndUtil::SetDestTargetList(widget, kDestTargetList); + gtk_dnd_util::SetDestTargetList(widget, kDestTargetList); g_signal_connect(widget, "drag-data-received", G_CALLBACK(&OnDragReceived), this); @@ -1110,7 +1110,7 @@ gboolean BookmarkBarGtk::OnToolbarDragMotion(GtkToolbar* toolbar, } if (target_type == - GtkDndUtil::GetAtomForTarget(GtkDndUtil::CHROME_BOOKMARK_ITEM)) { + gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::CHROME_BOOKMARK_ITEM)) { gdk_drag_status(context, GDK_ACTION_MOVE, time); } else { gdk_drag_status(context, GDK_ACTION_COPY, time); @@ -1174,7 +1174,7 @@ void BookmarkBarGtk::OnDragReceived(GtkWidget* widget, } switch (target_type) { - case GtkDndUtil::CHROME_BOOKMARK_ITEM: { + case gtk_dnd_util::CHROME_BOOKMARK_ITEM: { std::vector<const BookmarkNode*> nodes = bookmark_utils::GetNodesFromSelection(context, selection_data, target_type, @@ -1190,19 +1190,19 @@ void BookmarkBarGtk::OnDragReceived(GtkWidget* widget, break; } - case GtkDndUtil::CHROME_NAMED_URL: { + case gtk_dnd_util::CHROME_NAMED_URL: { dnd_success = bookmark_utils::CreateNewBookmarkFromNamedUrl( selection_data, bar->model_, dest_node, index); break; } - case GtkDndUtil::TEXT_URI_LIST: { + case gtk_dnd_util::TEXT_URI_LIST: { dnd_success = bookmark_utils::CreateNewBookmarksFromURIList( selection_data, bar->model_, dest_node, index); break; } - case GtkDndUtil::TEXT_PLAIN: { + case gtk_dnd_util::TEXT_PLAIN: { guchar* text = gtk_selection_data_get_text(selection_data); if (!text) break; diff --git a/chrome/browser/gtk/bookmark_manager_gtk.cc b/chrome/browser/gtk/bookmark_manager_gtk.cc index b856ace..b023a44c 100644 --- a/chrome/browser/gtk/bookmark_manager_gtk.cc +++ b/chrome/browser/gtk/bookmark_manager_gtk.cc @@ -58,13 +58,13 @@ const int kSearchDelayMS = 200; const int kDefaultColumnWidth = 200; // The destination targets that the right tree view accepts for dragging. -const int kDestTargetList[] = { GtkDndUtil::CHROME_BOOKMARK_ITEM, -1 }; +const int kDestTargetList[] = { gtk_dnd_util::CHROME_BOOKMARK_ITEM, -1 }; // The source targets that the right tree view supports for dragging. -const int kSourceTargetMask = GtkDndUtil::CHROME_BOOKMARK_ITEM | - GtkDndUtil::TEXT_URI_LIST | - GtkDndUtil::TEXT_PLAIN | - GtkDndUtil::NETSCAPE_URL; +const int kSourceTargetMask = gtk_dnd_util::CHROME_BOOKMARK_ITEM | + gtk_dnd_util::TEXT_URI_LIST | + gtk_dnd_util::TEXT_PLAIN | + gtk_dnd_util::NETSCAPE_URL; // We only have one manager open at a time. BookmarkManagerGtk* manager = NULL; @@ -481,7 +481,7 @@ GtkWidget* BookmarkManagerGtk::MakeLeftPane() { // The left side is only a drag destination (not a source). gtk_drag_dest_set(left_tree_view_, GTK_DEST_DEFAULT_DROP, NULL, 0, GDK_ACTION_MOVE); - GtkDndUtil::SetDestTargetList(left_tree_view_, kDestTargetList); + gtk_dnd_util::SetDestTargetList(left_tree_view_, kDestTargetList); g_signal_connect(left_tree_view_, "drag-data-received", G_CALLBACK(&OnLeftTreeViewDragReceived), this); @@ -558,7 +558,7 @@ GtkWidget* BookmarkManagerGtk::MakeRightPane() { gtk_drag_source_set(right_tree_view_, GDK_BUTTON1_MASK, NULL, 0, static_cast<GdkDragAction>(GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK)); - GtkDndUtil::SetSourceTargetListFromCodeMask( + gtk_dnd_util::SetSourceTargetListFromCodeMask( right_tree_view_, kSourceTargetMask); // We connect to drag dest signals, but we don't actually enable the widget @@ -714,7 +714,7 @@ void BookmarkManagerGtk::ResetRightStoreModel() { gtk_drag_dest_set(right_tree_view_, GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_MOVE); - GtkDndUtil::SetDestTargetList(right_tree_view_, kDestTargetList); + gtk_dnd_util::SetDestTargetList(right_tree_view_, kDestTargetList); } else { SaveColumnConfiguration(); gtk_tree_view_column_set_visible(path_column_, TRUE); @@ -1300,7 +1300,7 @@ gboolean BookmarkManagerGtk::OnRightTreeViewMotion( static_cast<gint>(event->x), static_cast<gint>(event->y))) { bm->delaying_mousedown_ = false; - GtkTargetList* targets = GtkDndUtil::GetTargetListFromCodeMask( + GtkTargetList* targets = gtk_dnd_util::GetTargetListFromCodeMask( kSourceTargetMask); gtk_drag_begin(tree_view, targets, GDK_ACTION_MOVE, 1, reinterpret_cast<GdkEvent*>(event)); diff --git a/chrome/browser/gtk/bookmark_menu_controller_gtk.cc b/chrome/browser/gtk/bookmark_menu_controller_gtk.cc index b284f91..754e506 100644 --- a/chrome/browser/gtk/bookmark_menu_controller_gtk.cc +++ b/chrome/browser/gtk/bookmark_menu_controller_gtk.cc @@ -188,10 +188,10 @@ void BookmarkMenuController::BuildMenu(const BookmarkNode* parent, gtk_drag_source_set(menu_item, GDK_BUTTON1_MASK, NULL, 0, static_cast<GdkDragAction>(GDK_ACTION_COPY | GDK_ACTION_LINK)); - int target_mask = GtkDndUtil::CHROME_BOOKMARK_ITEM; + int target_mask = gtk_dnd_util::CHROME_BOOKMARK_ITEM; if (node->is_url()) - target_mask |= GtkDndUtil::TEXT_URI_LIST | GtkDndUtil::NETSCAPE_URL; - GtkDndUtil::SetSourceTargetListFromCodeMask(menu_item, target_mask); + target_mask |= gtk_dnd_util::TEXT_URI_LIST | gtk_dnd_util::NETSCAPE_URL; + gtk_dnd_util::SetSourceTargetListFromCodeMask(menu_item, target_mask); g_signal_connect(menu_item, "drag-begin", G_CALLBACK(&OnMenuItemDragBegin), this); g_signal_connect(menu_item, "drag-end", diff --git a/chrome/browser/gtk/bookmark_utils_gtk.cc b/chrome/browser/gtk/bookmark_utils_gtk.cc index c7d5770..880731d 100644 --- a/chrome/browser/gtk/bookmark_utils_gtk.cc +++ b/chrome/browser/gtk/bookmark_utils_gtk.cc @@ -213,7 +213,7 @@ void WriteBookmarksToSelection(const std::vector<const BookmarkNode*>& nodes, guint target_type, Profile* profile) { switch (target_type) { - case GtkDndUtil::CHROME_BOOKMARK_ITEM: { + case gtk_dnd_util::CHROME_BOOKMARK_ITEM: { BookmarkDragData data(nodes); Pickle pickle; data.WriteToPickle(profile, &pickle); @@ -224,7 +224,7 @@ void WriteBookmarksToSelection(const std::vector<const BookmarkNode*>& nodes, pickle.size()); break; } - case GtkDndUtil::NETSCAPE_URL: { + case gtk_dnd_util::NETSCAPE_URL: { // _NETSCAPE_URL format is URL + \n + title. std::string utf8_text = nodes[0]->GetURL().spec() + "\n" + UTF16ToUTF8( nodes[0]->GetTitleAsString16()); @@ -235,7 +235,7 @@ void WriteBookmarksToSelection(const std::vector<const BookmarkNode*>& nodes, utf8_text.length()); break; } - case GtkDndUtil::TEXT_URI_LIST: { + case gtk_dnd_util::TEXT_URI_LIST: { gchar** uris = reinterpret_cast<gchar**>(malloc(sizeof(gchar*) * (nodes.size() + 1))); for (size_t i = 0; i < nodes.size(); ++i) { @@ -253,7 +253,7 @@ void WriteBookmarksToSelection(const std::vector<const BookmarkNode*>& nodes, free(uris); break; } - case GtkDndUtil::TEXT_PLAIN: { + case gtk_dnd_util::TEXT_PLAIN: { gtk_selection_data_set_text(selection_data, nodes[0]->GetURL().spec().c_str(), -1); break; @@ -281,7 +281,7 @@ std::vector<const BookmarkNode*> GetNodesFromSelection( } switch (target_type) { - case GtkDndUtil::CHROME_BOOKMARK_ITEM: { + case gtk_dnd_util::CHROME_BOOKMARK_ITEM: { *dnd_success = TRUE; Pickle pickle(reinterpret_cast<char*>(selection_data->data), selection_data->length); @@ -302,7 +302,7 @@ bool CreateNewBookmarkFromNamedUrl(GtkSelectionData* selection_data, BookmarkModel* model, const BookmarkNode* parent, int idx) { GURL url; string16 title; - if (!GtkDndUtil::ExtractNamedURL(selection_data, &url, &title)) + if (!gtk_dnd_util::ExtractNamedURL(selection_data, &url, &title)) return false; model->AddURL(parent, idx, UTF16ToWideHack(title), url); @@ -312,7 +312,7 @@ bool CreateNewBookmarkFromNamedUrl(GtkSelectionData* selection_data, bool CreateNewBookmarksFromURIList(GtkSelectionData* selection_data, BookmarkModel* model, const BookmarkNode* parent, int idx) { std::vector<GURL> urls; - GtkDndUtil::ExtractURIList(selection_data, &urls); + gtk_dnd_util::ExtractURIList(selection_data, &urls); for (size_t i = 0; i < urls.size(); ++i) { std::string title = GetNameForURL(urls[i]); model->AddURL(parent, idx++, UTF8ToWide(title), urls[i]); diff --git a/chrome/browser/gtk/browser_toolbar_gtk.cc b/chrome/browser/gtk/browser_toolbar_gtk.cc index 030a18d..403e38e 100644 --- a/chrome/browser/gtk/browser_toolbar_gtk.cc +++ b/chrome/browser/gtk/browser_toolbar_gtk.cc @@ -525,9 +525,9 @@ GtkWidget* BrowserToolbarGtk::BuildToolbarMenuButton( void BrowserToolbarGtk::SetUpDragForHomeButton() { gtk_drag_dest_set(home_->widget(), GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_COPY); - static const int targets[] = { GtkDndUtil::TEXT_PLAIN, - GtkDndUtil::TEXT_URI_LIST, -1 }; - GtkDndUtil::SetDestTargetList(home_->widget(), targets); + static const int targets[] = { gtk_dnd_util::TEXT_PLAIN, + gtk_dnd_util::TEXT_URI_LIST, -1 }; + gtk_dnd_util::SetDestTargetList(home_->widget(), targets); g_signal_connect(home_->widget(), "drag-data-received", G_CALLBACK(OnDragDataReceived), this); @@ -674,7 +674,7 @@ void BrowserToolbarGtk::OnDragDataReceived(GtkWidget* widget, GdkDragContext* drag_context, gint x, gint y, GtkSelectionData* data, guint info, guint time, BrowserToolbarGtk* toolbar) { - if (info != GtkDndUtil::TEXT_PLAIN) { + if (info != gtk_dnd_util::TEXT_PLAIN) { NOTIMPLEMENTED() << "Only support plain text drops for now, sorry!"; return; } diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc index 6bcb176..f1dc892 100644 --- a/chrome/browser/gtk/browser_window_gtk.cc +++ b/chrome/browser/gtk/browser_window_gtk.cc @@ -11,6 +11,7 @@ #include "app/gfx/color_utils.h" #include "app/gfx/gtk_util.h" #include "app/gfx/skia_utils_gtk.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "app/resource_bundle.h" #include "app/theme_provider.h" diff --git a/chrome/browser/gtk/download_item_drag.cc b/chrome/browser/gtk/download_item_drag.cc index 9ad1c2e..ed5a8dd 100644 --- a/chrome/browser/gtk/download_item_drag.cc +++ b/chrome/browser/gtk/download_item_drag.cc @@ -14,8 +14,8 @@ namespace { -const int kCodeMask = GtkDndUtil::TEXT_URI_LIST | - GtkDndUtil::CHROME_NAMED_URL; +const int kCodeMask = gtk_dnd_util::TEXT_URI_LIST | + gtk_dnd_util::CHROME_NAMED_URL; const GdkDragAction kDragAction = GDK_ACTION_COPY; void OnDragDataGet(GtkWidget* widget, GdkDragContext* context, @@ -23,7 +23,7 @@ void OnDragDataGet(GtkWidget* widget, GdkDragContext* context, guint target_type, guint time, DownloadItem* download_item) { GURL url = net::FilePathToFileURL(download_item->full_path()); - GtkDndUtil::WriteURLWithName(selection_data, url, + gtk_dnd_util::WriteURLWithName(selection_data, url, UTF8ToUTF16(download_item->GetFileName().value()), target_type); } @@ -33,7 +33,7 @@ void OnDragDataGet(GtkWidget* widget, GdkDragContext* context, void DownloadItemDrag::SetSource(GtkWidget* widget, DownloadItem* item) { gtk_drag_source_set(widget, GDK_BUTTON1_MASK, NULL, 0, kDragAction); - GtkDndUtil::SetSourceTargetListFromCodeMask(widget, kCodeMask); + gtk_dnd_util::SetSourceTargetListFromCodeMask(widget, kCodeMask); g_signal_connect(widget, "drag-data-get", G_CALLBACK(OnDragDataGet), item); } @@ -55,7 +55,7 @@ DownloadItemDrag::DownloadItemDrag(const DownloadItem* item, g_signal_connect(drag_widget_, "drag-end", G_CALLBACK(OnDragEnd), this); - GtkTargetList* list = GtkDndUtil::GetTargetListFromCodeMask(kCodeMask); + GtkTargetList* list = gtk_dnd_util::GetTargetListFromCodeMask(kCodeMask); GdkEvent* event = gtk_get_current_event(); gtk_drag_begin(drag_widget_, list, kDragAction, 1, event); if (event) diff --git a/chrome/browser/gtk/download_item_gtk.cc b/chrome/browser/gtk/download_item_gtk.cc index d2c940c..264b003 100644 --- a/chrome/browser/gtk/download_item_gtk.cc +++ b/chrome/browser/gtk/download_item_gtk.cc @@ -4,6 +4,7 @@ #include "chrome/browser/gtk/download_item_gtk.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "app/gfx/canvas_paint.h" #include "app/gfx/color_utils.h" diff --git a/chrome/browser/gtk/first_run_bubble.cc b/chrome/browser/gtk/first_run_bubble.cc index e502781..eff6f9d 100644 --- a/chrome/browser/gtk/first_run_bubble.cc +++ b/chrome/browser/gtk/first_run_bubble.cc @@ -7,10 +7,10 @@ #include <gtk/gtk.h> #include "app/gfx/gtk_util.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "base/utf_string_conversions.h" #include "chrome/browser/gtk/gtk_theme_provider.h" -#include "chrome/browser/gtk/gtk_util.h" #include "chrome/browser/options_window.h" #include "chrome/browser/search_engines/template_url_model.h" #include "chrome/common/notification_service.h" diff --git a/chrome/browser/gtk/gtk_util.cc b/chrome/browser/gtk/gtk_util.cc index 465202b..88b60fb 100644 --- a/chrome/browser/gtk/gtk_util.cc +++ b/chrome/browser/gtk/gtk_util.cc @@ -10,6 +10,7 @@ #include <cstdarg> #include <map> +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "app/resource_bundle.h" #include "base/linux_util.h" @@ -202,44 +203,6 @@ GtkWidget* CreateBoldLabel(const std::string& text) { return LeftAlignMisc(label); } -void GetWidgetSizeFromResources(GtkWidget* widget, int width_chars, - int height_lines, int* width, int* height) { - DCHECK(GTK_WIDGET_REALIZED(widget)) - << " widget must be realized to compute font metrics correctly"; - - double chars = 0; - if (width) - StringToDouble(l10n_util::GetStringUTF8(width_chars), &chars); - - double lines = 0; - if (height) - StringToDouble(l10n_util::GetStringUTF8(height_lines), &lines); - - GetWidgetSizeFromCharacters(widget, chars, lines, width, height); -} - -void GetWidgetSizeFromCharacters(GtkWidget* widget, double width_chars, - double height_lines, int* width, int* height) { - DCHECK(GTK_WIDGET_REALIZED(widget)) - << " widget must be realized to compute font metrics correctly"; - PangoContext* context = gtk_widget_create_pango_context(widget); - PangoFontMetrics* metrics = pango_context_get_metrics(context, - widget->style->font_desc, pango_context_get_language(context)); - if (width) { - *width = static_cast<int>( - pango_font_metrics_get_approximate_char_width(metrics) * - width_chars / PANGO_SCALE); - } - if (height) { - *height = static_cast<int>( - (pango_font_metrics_get_ascent(metrics) + - pango_font_metrics_get_descent(metrics)) * - height_lines / PANGO_SCALE); - } - pango_font_metrics_unref(metrics); - g_object_unref(context); -} - void SetWindowSizeFromResources(GtkWindow* window, int width_id, int height_id, bool resizable) { int width = -1; @@ -839,16 +802,6 @@ gfx::Rect GetWidgetRectRelativeToToplevel(GtkWidget* widget) { return gfx::Rect(x, y, widget->allocation.width, widget->allocation.height); } -void ApplyMessageDialogQuirks(GtkWidget* dialog) { - if (gtk_window_get_modal(GTK_WINDOW(dialog))) { - // Work around a KDE 3 window manager bug. - scoped_ptr<base::EnvironmentVariableGetter> env( - base::EnvironmentVariableGetter::Create()); - if (base::DESKTOP_ENVIRONMENT_KDE3 == GetDesktopEnvironment(env.get())) - gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE); - } -} - void SuppressDefaultPainting(GtkWidget* container) { g_signal_connect(container, "expose-event", G_CALLBACK(PaintNoBackground), NULL); diff --git a/chrome/browser/gtk/gtk_util.h b/chrome/browser/gtk/gtk_util.h index a51470f..dad4d6b 100644 --- a/chrome/browser/gtk/gtk_util.h +++ b/chrome/browser/gtk/gtk_util.h @@ -78,18 +78,6 @@ GtkWidget* LeftAlignMisc(GtkWidget* misc); // Create a left-aligned label with the given text in bold. GtkWidget* CreateBoldLabel(const std::string& text); -// Calculates the size of given widget based on the size specified in -// number of characters/lines (in locale specific resource file) and -// font metrics. -// NOTE: Make sure to realize |widget| before using this method, or a -// default font size will be used instead of the actual font size. -void GetWidgetSizeFromResources(GtkWidget* widget, int width_chars, - int height_lines, int* width, int* height); - -// As above, but uses number of characters/lines directly rather than looking -// up a resource. -void GetWidgetSizeFromCharacters(GtkWidget* widget, double width_chars, - double height_lines, int* width, int* height); // As above, but a convenience method for configuring dialog size. // |width_id| and |height_id| are resource IDs for the size. If either of these @@ -244,11 +232,6 @@ void StackPopupWindow(GtkWidget* popup, GtkWidget* toplevel); // toplevel window's origin. gfx::Rect GetWidgetRectRelativeToToplevel(GtkWidget* widget); -// A helper function for gtk_message_dialog_new() to work around a KDE 3 window -// manager bugs. You should always call it after creating a dialog with -// gtk_message_dialog_new. -void ApplyMessageDialogQuirks(GtkWidget* dialog); - // Don't allow the widget to paint anything, and instead propagate the expose // to its children. This is similar to calling // diff --git a/chrome/browser/gtk/options/advanced_contents_gtk.cc b/chrome/browser/gtk/options/advanced_contents_gtk.cc index bed7964..665da0e 100644 --- a/chrome/browser/gtk/options/advanced_contents_gtk.cc +++ b/chrome/browser/gtk/options/advanced_contents_gtk.cc @@ -7,6 +7,7 @@ #include <sys/types.h> #include <sys/wait.h> +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "base/basictypes.h" #include "base/file_util.h" diff --git a/chrome/browser/gtk/options/advanced_page_gtk.cc b/chrome/browser/gtk/options/advanced_page_gtk.cc index 4c9d437..3440595 100644 --- a/chrome/browser/gtk/options/advanced_page_gtk.cc +++ b/chrome/browser/gtk/options/advanced_page_gtk.cc @@ -4,6 +4,7 @@ #include "chrome/browser/gtk/options/advanced_page_gtk.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "chrome/browser/gtk/gtk_util.h" #include "chrome/browser/options_util.h" diff --git a/chrome/browser/gtk/options/content_page_gtk.cc b/chrome/browser/gtk/options/content_page_gtk.cc index 64556cf..2789195 100644 --- a/chrome/browser/gtk/options/content_page_gtk.cc +++ b/chrome/browser/gtk/options/content_page_gtk.cc @@ -7,6 +7,7 @@ #include <string> #include "app/gfx/gtk_util.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "app/resource_bundle.h" #include "chrome/browser/browser.h" diff --git a/chrome/browser/gtk/options/passwords_page_gtk.cc b/chrome/browser/gtk/options/passwords_page_gtk.cc index f52a901..5d21276 100644 --- a/chrome/browser/gtk/options/passwords_page_gtk.cc +++ b/chrome/browser/gtk/options/passwords_page_gtk.cc @@ -7,6 +7,7 @@ #include <string> #include "app/gfx/gtk_util.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "app/resource_bundle.h" #include "base/utf_string_conversions.h" diff --git a/chrome/browser/gtk/options/url_picker_dialog_gtk.cc b/chrome/browser/gtk/options/url_picker_dialog_gtk.cc index f89a199..fde744d 100644 --- a/chrome/browser/gtk/options/url_picker_dialog_gtk.cc +++ b/chrome/browser/gtk/options/url_picker_dialog_gtk.cc @@ -5,6 +5,7 @@ #include <gtk/gtk.h> #include "app/gfx/gtk_util.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "base/message_loop.h" #include "base/utf_string_conversions.h" diff --git a/chrome/browser/gtk/process_singleton_dialog.cc b/chrome/browser/gtk/process_singleton_dialog.cc index 26fc1b4..cdd4eab 100644 --- a/chrome/browser/gtk/process_singleton_dialog.cc +++ b/chrome/browser/gtk/process_singleton_dialog.cc @@ -4,9 +4,9 @@ #include "chrome/browser/gtk/process_singleton_dialog.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "base/message_loop.h" -#include "chrome/browser/gtk/gtk_util.h" #include "grit/chromium_strings.h" // static diff --git a/chrome/browser/gtk/repost_form_warning_gtk.cc b/chrome/browser/gtk/repost_form_warning_gtk.cc index 5245866..53d1ca1 100644 --- a/chrome/browser/gtk/repost_form_warning_gtk.cc +++ b/chrome/browser/gtk/repost_form_warning_gtk.cc @@ -4,6 +4,7 @@ #include "chrome/browser/gtk/repost_form_warning_gtk.h" +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "base/message_loop.h" #include "chrome/browser/gtk/gtk_util.h" diff --git a/chrome/browser/gtk/tab_contents_drag_source.cc b/chrome/browser/gtk/tab_contents_drag_source.cc index dbc7293..85ebe0c 100644 --- a/chrome/browser/gtk/tab_contents_drag_source.cc +++ b/chrome/browser/gtk/tab_contents_drag_source.cc @@ -73,22 +73,22 @@ void TabContentsDragSource::StartDragging(const WebDropData& drop_data, int targets_mask = 0; if (!drop_data.plain_text.empty()) - targets_mask |= GtkDndUtil::TEXT_PLAIN; + targets_mask |= gtk_dnd_util::TEXT_PLAIN; if (drop_data.url.is_valid()) { - targets_mask |= GtkDndUtil::TEXT_URI_LIST; - targets_mask |= GtkDndUtil::CHROME_NAMED_URL; - targets_mask |= GtkDndUtil::NETSCAPE_URL; + targets_mask |= gtk_dnd_util::TEXT_URI_LIST; + targets_mask |= gtk_dnd_util::CHROME_NAMED_URL; + targets_mask |= gtk_dnd_util::NETSCAPE_URL; } if (!drop_data.text_html.empty()) - targets_mask |= GtkDndUtil::TEXT_HTML; + targets_mask |= gtk_dnd_util::TEXT_HTML; if (!drop_data.file_contents.empty()) - targets_mask |= GtkDndUtil::CHROME_WEBDROP_FILE_CONTENTS; + targets_mask |= gtk_dnd_util::CHROME_WEBDROP_FILE_CONTENTS; if (!drop_data.download_metadata.empty() && drag_download_util::ParseDownloadMetadata(drop_data.download_metadata, &wide_download_mime_type_, &download_file_name_, &download_url_)) { - targets_mask |= GtkDndUtil::DIRECT_SAVE_FILE; + targets_mask |= gtk_dnd_util::DIRECT_SAVE_FILE; } if (targets_mask == 0) { @@ -99,12 +99,12 @@ void TabContentsDragSource::StartDragging(const WebDropData& drop_data, drop_data_.reset(new WebDropData(drop_data)); - GtkTargetList* list = GtkDndUtil::GetTargetListFromCodeMask(targets_mask); - if (targets_mask & GtkDndUtil::CHROME_WEBDROP_FILE_CONTENTS) { + GtkTargetList* list = gtk_dnd_util::GetTargetListFromCodeMask(targets_mask); + if (targets_mask & gtk_dnd_util::CHROME_WEBDROP_FILE_CONTENTS) { drag_file_mime_type_ = gdk_atom_intern( mime_util::GetDataMimeType(drop_data.file_contents).c_str(), FALSE); gtk_target_list_add(list, drag_file_mime_type_, - 0, GtkDndUtil::CHROME_WEBDROP_FILE_CONTENTS); + 0, gtk_dnd_util::CHROME_WEBDROP_FILE_CONTENTS); } drag_failed_ = false; @@ -161,35 +161,35 @@ void TabContentsDragSource::OnDragDataGet( const int kBitsPerByte = 8; switch (target_type) { - case GtkDndUtil::TEXT_PLAIN: { + case gtk_dnd_util::TEXT_PLAIN: { std::string utf8_text = UTF16ToUTF8(drop_data_->plain_text); gtk_selection_data_set_text(selection_data, utf8_text.c_str(), utf8_text.length()); break; } - case GtkDndUtil::TEXT_HTML: { + case gtk_dnd_util::TEXT_HTML: { // TODO(estade): change relative links to be absolute using // |html_base_url|. std::string utf8_text = UTF16ToUTF8(drop_data_->text_html); gtk_selection_data_set(selection_data, - GtkDndUtil::GetAtomForTarget( - GtkDndUtil::TEXT_HTML), + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::TEXT_HTML), kBitsPerByte, reinterpret_cast<const guchar*>(utf8_text.c_str()), utf8_text.length()); break; } - case GtkDndUtil::TEXT_URI_LIST: - case GtkDndUtil::CHROME_NAMED_URL: - case GtkDndUtil::NETSCAPE_URL: { - GtkDndUtil::WriteURLWithName(selection_data, drop_data_->url, + case gtk_dnd_util::TEXT_URI_LIST: + case gtk_dnd_util::CHROME_NAMED_URL: + case gtk_dnd_util::NETSCAPE_URL: { + gtk_dnd_util::WriteURLWithName(selection_data, drop_data_->url, drop_data_->url_title, target_type); break; } - case GtkDndUtil::CHROME_WEBDROP_FILE_CONTENTS: { + case gtk_dnd_util::CHROME_WEBDROP_FILE_CONTENTS: { gtk_selection_data_set( selection_data, drag_file_mime_type_, kBitsPerByte, @@ -198,7 +198,7 @@ void TabContentsDragSource::OnDragDataGet( break; } - case GtkDndUtil::DIRECT_SAVE_FILE: { + case gtk_dnd_util::DIRECT_SAVE_FILE: { char status_code = 'E'; // Retrieves the full file path (in file URL format) provided by the @@ -207,10 +207,10 @@ void TabContentsDragSource::OnDragDataGet( gint file_url_len = 0; guchar* file_url_value = NULL; if (gdk_property_get(context->source_window, - GtkDndUtil::GetAtomForTarget( - GtkDndUtil::DIRECT_SAVE_FILE), - GtkDndUtil::GetAtomForTarget( - GtkDndUtil::TEXT_PLAIN_NO_CHARSET), + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::DIRECT_SAVE_FILE), + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::TEXT_PLAIN_NO_CHARSET), 0, 1024, FALSE, @@ -293,10 +293,10 @@ void TabContentsDragSource::OnDragBegin(GdkDragContext* drag_context) { // Pass the file name to the drop target by setting the source window's // XdndDirectSave0 property. gdk_property_change(drag_context->source_window, - GtkDndUtil::GetAtomForTarget( - GtkDndUtil::DIRECT_SAVE_FILE), - GtkDndUtil::GetAtomForTarget( - GtkDndUtil::TEXT_PLAIN_NO_CHARSET), + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::DIRECT_SAVE_FILE), + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::TEXT_PLAIN_NO_CHARSET), 8, GDK_PROP_MODE_REPLACE, reinterpret_cast<const guchar*>( @@ -311,8 +311,8 @@ void TabContentsDragSource::OnDragEnd(GdkDragContext* drag_context, if (!download_url_.is_empty()) { gdk_property_delete(drag_context->source_window, - GtkDndUtil::GetAtomForTarget( - GtkDndUtil::DIRECT_SAVE_FILE)); + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::DIRECT_SAVE_FILE)); } if (!drag_failed_) { diff --git a/chrome/browser/gtk/tabs/tab_gtk.cc b/chrome/browser/gtk/tabs/tab_gtk.cc index 64c5404..165b789 100644 --- a/chrome/browser/gtk/tabs/tab_gtk.cc +++ b/chrome/browser/gtk/tabs/tab_gtk.cc @@ -389,8 +389,8 @@ void TabGtk::DestroyDragWidget() { void TabGtk::StartDragging(gfx::Point drag_offset) { CreateDragWidget(); - GtkTargetList* list = GtkDndUtil::GetTargetListFromCodeMask( - GtkDndUtil::CHROME_TAB); + GtkTargetList* list = gtk_dnd_util::GetTargetListFromCodeMask( + gtk_dnd_util::CHROME_TAB); gtk_drag_begin(drag_widget_, list, GDK_ACTION_MOVE, 1, // Drags are always initiated by the left button. last_mouse_down_); diff --git a/chrome/browser/gtk/tabs/tab_strip_gtk.cc b/chrome/browser/gtk/tabs/tab_strip_gtk.cc index ec8c893..7c52293 100644 --- a/chrome/browser/gtk/tabs/tab_strip_gtk.cc +++ b/chrome/browser/gtk/tabs/tab_strip_gtk.cc @@ -731,10 +731,10 @@ void TabStripGtk::Init() { NULL, 0, static_cast<GdkDragAction>( GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK)); - static const int targets[] = { GtkDndUtil::TEXT_URI_LIST, - GtkDndUtil::NETSCAPE_URL, + static const int targets[] = { gtk_dnd_util::TEXT_URI_LIST, + gtk_dnd_util::NETSCAPE_URL, -1 }; - GtkDndUtil::SetDestTargetList(tabstrip_.get(), targets); + gtk_dnd_util::SetDestTargetList(tabstrip_.get(), targets); g_signal_connect(tabstrip_.get(), "expose-event", G_CALLBACK(OnExpose), this); @@ -1962,8 +1962,8 @@ gboolean TabStripGtk::OnDragDataReceived(GtkWidget* widget, TabStripGtk* tabstrip) { bool success = false; - if (info == GtkDndUtil::TEXT_URI_LIST || - info == GtkDndUtil::NETSCAPE_URL) { + if (info == gtk_dnd_util::TEXT_URI_LIST || + info == gtk_dnd_util::NETSCAPE_URL) { success = tabstrip->CompleteDrop(data->data); } diff --git a/chrome/browser/gtk/toolbar_star_toggle_gtk.cc b/chrome/browser/gtk/toolbar_star_toggle_gtk.cc index 5c1f931..8715dde 100644 --- a/chrome/browser/gtk/toolbar_star_toggle_gtk.cc +++ b/chrome/browser/gtk/toolbar_star_toggle_gtk.cc @@ -40,11 +40,11 @@ ToolbarStarToggleGtk::ToolbarStarToggleGtk(BrowserToolbarGtk* host) gtk_drag_source_set(widget(), GDK_BUTTON1_MASK, NULL, 0, static_cast<GdkDragAction>(GDK_ACTION_COPY | GDK_ACTION_LINK)); - GtkDndUtil::SetSourceTargetListFromCodeMask(widget(), - GtkDndUtil::TEXT_PLAIN | - GtkDndUtil::TEXT_URI_LIST | - GtkDndUtil::CHROME_NAMED_URL | - GtkDndUtil::NETSCAPE_URL); + gtk_dnd_util::SetSourceTargetListFromCodeMask(widget(), + gtk_dnd_util::TEXT_PLAIN | + gtk_dnd_util::TEXT_URI_LIST | + gtk_dnd_util::CHROME_NAMED_URL | + gtk_dnd_util::NETSCAPE_URL); g_signal_connect(widget(), "drag-data-get", G_CALLBACK(OnDragDataGet), this); theme_provider_->InitThemesFor(this); @@ -107,7 +107,7 @@ void ToolbarStarToggleGtk::OnDragDataGet(GtkWidget* widget, GetSelectedTabContents(); if (!tab) return; - GtkDndUtil::WriteURLWithName(data, tab->GetURL(), tab->GetTitle(), info); + gtk_dnd_util::WriteURLWithName(data, tab->GetURL(), tab->GetTitle(), info); } void ToolbarStarToggleGtk::UpdateGTKButton() { diff --git a/chrome/browser/js_modal_dialog_gtk.cc b/chrome/browser/js_modal_dialog_gtk.cc index 773fcfc..73d7f16 100644 --- a/chrome/browser/js_modal_dialog_gtk.cc +++ b/chrome/browser/js_modal_dialog_gtk.cc @@ -6,6 +6,7 @@ #include <gtk/gtk.h> +#include "app/gtk_util.h" #include "app/l10n_util.h" #include "app/message_box_flags.h" #include "base/logging.h" diff --git a/chrome/browser/tab_contents/web_drag_dest_gtk.cc b/chrome/browser/tab_contents/web_drag_dest_gtk.cc index d439a3f..2336345 100644 --- a/chrome/browser/tab_contents/web_drag_dest_gtk.cc +++ b/chrome/browser/tab_contents/web_drag_dest_gtk.cc @@ -70,16 +70,16 @@ gboolean WebDragDestGtk::OnDragMotion(GdkDragContext* context, gint x, gint y, is_drop_target_ = false; static int supported_targets[] = { - GtkDndUtil::TEXT_PLAIN, - GtkDndUtil::TEXT_URI_LIST, - GtkDndUtil::TEXT_HTML, + gtk_dnd_util::TEXT_PLAIN, + gtk_dnd_util::TEXT_URI_LIST, + gtk_dnd_util::TEXT_HTML, // TODO(estade): support image drags? }; data_requests_ = arraysize(supported_targets); for (size_t i = 0; i < arraysize(supported_targets); ++i) { gtk_drag_get_data(widget_, context, - GtkDndUtil::GetAtomForTarget(supported_targets[i]), + gtk_dnd_util::GetAtomForTarget(supported_targets[i]), time); } } else if (data_requests_ == 0) { @@ -112,7 +112,7 @@ void WebDragDestGtk::OnDragDataReceived( // If the source can't provide us with valid data for a requested target, // data->data will be NULL. if (data->target == - GtkDndUtil::GetAtomForTarget(GtkDndUtil::TEXT_PLAIN)) { + gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::TEXT_PLAIN)) { guchar* text = gtk_selection_data_get_text(data); if (text) { drop_data_->plain_text = @@ -121,7 +121,7 @@ void WebDragDestGtk::OnDragDataReceived( g_free(text); } } else if (data->target == - GtkDndUtil::GetAtomForTarget(GtkDndUtil::TEXT_URI_LIST)) { + gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::TEXT_URI_LIST)) { gchar** uris = gtk_selection_data_get_uris(data); if (uris) { for (gchar** uri_iter = uris; *uri_iter; uri_iter++) { @@ -136,7 +136,7 @@ void WebDragDestGtk::OnDragDataReceived( g_strfreev(uris); } } else if (data->target == - GtkDndUtil::GetAtomForTarget(GtkDndUtil::TEXT_HTML)) { + gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::TEXT_HTML)) { // TODO(estade): Can the html have a non-UTF8 encoding? drop_data_->text_html = UTF8ToUTF16(std::string(reinterpret_cast<char*>(data->data), diff --git a/chrome/common/DEPS b/chrome/common/DEPS index 50f16bfb..8a41106 100644 --- a/chrome/common/DEPS +++ b/chrome/common/DEPS @@ -16,6 +16,5 @@ include_rules = [ # FIXME - refactor code and remove these dependencies "+chrome/app", - "+chrome/browser", "+chrome/installer", ] diff --git a/chrome/common/platform_util_linux.cc b/chrome/common/platform_util_linux.cc index c4bf536..beb6cf1 100644 --- a/chrome/common/platform_util_linux.cc +++ b/chrome/common/platform_util_linux.cc @@ -6,10 +6,10 @@ #include <gtk/gtk.h> +#include "app/gtk_util.h" #include "base/file_util.h" #include "base/process_util.h" #include "base/utf_string_conversions.h" -#include "chrome/browser/gtk/gtk_util.h" #include "chrome/common/process_watcher.h" #include "googleurl/src/gurl.h" diff --git a/chrome/common/sandbox_policy.cc b/chrome/common/sandbox_policy.cc index ba9b76d..ff5e5c5 100644 --- a/chrome/common/sandbox_policy.cc +++ b/chrome/common/sandbox_policy.cc @@ -14,7 +14,6 @@ #include "base/registry.h" #include "base/string_util.h" #include "base/win_util.h" -#include "chrome/browser/browser_process.h" #include "chrome/common/child_process_info.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_paths.h" @@ -23,13 +22,8 @@ #include "sandbox/src/sandbox.h" #include "webkit/glue/plugins/plugin_list.h" -#ifdef NACL_WIN64 - // The sandbox can be used also by the NaCl broker process. In this case we - // define a global variable g_broker_services instead of g_browser_process. - // This can be changed if we discover that the broker process needs to be more - // similar to the browser process. - extern sandbox::BrokerServices* g_broker_services; -#endif +static sandbox::BrokerServices* g_broker_services = NULL; + namespace { // The DLLs listed here are known (or under strong suspicion) of causing crashes @@ -364,6 +358,15 @@ void AddPolicyForRenderer(sandbox::TargetPolicy* policy, namespace sandbox { +void InitBrokerServices(sandbox::BrokerServices* broker_services) { + // TODO(abarth): DCHECK(CalledOnValidThread()); + // See <http://b/1287166>. + CHECK(broker_services); + CHECK(!g_broker_services); + broker_services->Init(); + g_broker_services = broker_services; +} + base::ProcessHandle StartProcessWithAccess(CommandLine* cmd_line, const FilePath& exposed_dir) { base::ProcessHandle process = 0; @@ -418,18 +421,9 @@ base::ProcessHandle StartProcessWithAccess(CommandLine* cmd_line, return process; } -#ifdef NACL_WIN64 - // When running in the broker we get the BrokerServices pointer from a global - // variable. It is initialized in NaClBrokerMain. - sandbox::BrokerServices* broker_service = g_broker_services; -#else - // spawn the child process in the sandbox - sandbox::BrokerServices* broker_service = - g_browser_process->broker_services(); -#endif sandbox::ResultCode result; PROCESS_INFORMATION target = {0}; - sandbox::TargetPolicy* policy = broker_service->CreatePolicy(); + sandbox::TargetPolicy* policy = g_broker_services->CreatePolicy(); bool on_sandbox_desktop = false; // TODO(gregoryd): try locked-down policy for sel_ldr after we fix IMC. @@ -468,7 +462,7 @@ base::ProcessHandle StartProcessWithAccess(CommandLine* cmd_line, return 0; } - result = broker_service->SpawnTarget( + result = g_broker_services->SpawnTarget( cmd_line->program().c_str(), cmd_line->command_line_string().c_str(), policy, &target); diff --git a/chrome/common/sandbox_policy.h b/chrome/common/sandbox_policy.h index 542b946..46ab7bf 100644 --- a/chrome/common/sandbox_policy.h +++ b/chrome/common/sandbox_policy.h @@ -12,6 +12,10 @@ class CommandLine; namespace sandbox { +class BrokerServices; + +void InitBrokerServices(sandbox::BrokerServices* broker_services); + // Starts a sandboxed process with the given directory unsandboxed // and returns a handle to it. base::ProcessHandle StartProcessWithAccess(CommandLine* cmd_line, diff --git a/chrome/nacl/nacl_main.cc b/chrome/nacl/nacl_main.cc index 88f7af8..a7325cd 100644 --- a/chrome/nacl/nacl_main.cc +++ b/chrome/nacl/nacl_main.cc @@ -21,6 +21,7 @@ #include "chrome/common/logging_chrome.h" #include "chrome/common/main_function_params.h" #include "chrome/common/result_codes.h" +#include "chrome/common/sandbox_policy.h" #if defined(OS_WIN) #include "chrome/nacl/broker_thread.h" #endif @@ -28,8 +29,6 @@ #ifdef _WIN64 -sandbox::BrokerServices* g_broker_services = NULL; - // main() routine for the NaCl broker process. // This is necessary for supporting NaCl in Chrome on Win64. int NaClBrokerMain(const MainFunctionParams& parameters) { @@ -54,7 +53,7 @@ int NaClBrokerMain(const MainFunctionParams& parameters) { sandbox::BrokerServices* broker_services = parameters.sandbox_info_.BrokerServices(); if (broker_services) { - g_broker_services = broker_services; + sandbox::InitBrokerServices(broker_services); if (!parsed_command_line.HasSwitch(switches::kNoSandbox)) { bool use_winsta = !parsed_command_line.HasSwitch( switches::kDisableAltWinstation); diff --git a/chrome/test/testing_browser_process.h b/chrome/test/testing_browser_process.h index 47a75e1..0a22151 100644 --- a/chrome/test/testing_browser_process.h +++ b/chrome/test/testing_browser_process.h @@ -81,15 +81,6 @@ class TestingBrowserProcess : public BrowserProcess { return NULL; } -#if defined(OS_WIN) - virtual sandbox::BrokerServices* broker_services() { - return NULL; - } - - virtual void InitBrokerServices(sandbox::BrokerServices*) { - } -#endif - virtual DebuggerWrapper* debugger_wrapper() { return NULL; } diff --git a/views/widget/drop_target_gtk.cc b/views/widget/drop_target_gtk.cc index 62fc1a8..82b36bb 100644 --- a/views/widget/drop_target_gtk.cc +++ b/views/widget/drop_target_gtk.cc @@ -43,11 +43,11 @@ int CalculateTypes(GList* targets, std::set<GdkAtom>* type_set) { type_set->insert(atom); if (atom == GDK_TARGET_STRING) { types |= OSExchangeData::STRING; - } else if (atom == GtkDndUtil::GetAtomForTarget( - GtkDndUtil::CHROME_NAMED_URL)) { + } else if (atom == gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::CHROME_NAMED_URL)) { types |= OSExchangeData::URL; - } else if (atom == GtkDndUtil::GetAtomForTarget( - GtkDndUtil::TEXT_URI_LIST)) { + } else if (atom == gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::TEXT_URI_LIST)) { // TEXT_URI_LIST is used for files as well as urls. types |= OSExchangeData::URL | OSExchangeData::FILE_NAME; } else { @@ -109,16 +109,16 @@ void DropTargetGtk::OnDragDataReceived(GdkDragContext* context, if (data->length > 0) result = Pickle(reinterpret_cast<char*>(data->data), data->length); data_provider().SetPickledData(data->type, result); - } else if (data->type == GtkDndUtil::GetAtomForTarget( - GtkDndUtil::CHROME_NAMED_URL)) { + } else if (data->type == gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::CHROME_NAMED_URL)) { GURL url; string16 title; - GtkDndUtil::ExtractNamedURL(data, &url, &title); + gtk_dnd_util::ExtractNamedURL(data, &url, &title); data_provider().SetURL(url, UTF16ToWideHack(title)); - } else if (data->type == GtkDndUtil::GetAtomForTarget( - GtkDndUtil::TEXT_URI_LIST)) { + } else if (data->type == gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::TEXT_URI_LIST)) { std::vector<GURL> urls; - GtkDndUtil::ExtractURIList(data, &urls); + gtk_dnd_util::ExtractURIList(data, &urls); if (urls.size() == 1 && urls[0].is_valid()) { data_provider().SetURL(urls[0], std::wstring()); @@ -298,23 +298,24 @@ void DropTargetGtk::RequestFormats(GdkDragContext* context, (requested_formats_ & OSExchangeData::URL) == 0) { requested_formats_ |= OSExchangeData::URL; if (known_formats.count( - GtkDndUtil::GetAtomForTarget(GtkDndUtil::CHROME_NAMED_URL))) { + gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::CHROME_NAMED_URL))) { gtk_drag_get_data(widget, context, - GtkDndUtil::GetAtomForTarget( - GtkDndUtil::CHROME_NAMED_URL), time); + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::CHROME_NAMED_URL), time); } else if (known_formats.count( - GtkDndUtil::GetAtomForTarget(GtkDndUtil::TEXT_URI_LIST))) { + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::TEXT_URI_LIST))) { gtk_drag_get_data(widget, context, - GtkDndUtil::GetAtomForTarget( - GtkDndUtil::TEXT_URI_LIST), time); + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::TEXT_URI_LIST), time); } } if (((formats & OSExchangeData::FILE_NAME) != 0) && (requested_formats_ & OSExchangeData::FILE_NAME) == 0) { requested_formats_ |= OSExchangeData::FILE_NAME; gtk_drag_get_data(widget, context, - GtkDndUtil::GetAtomForTarget( - GtkDndUtil::TEXT_URI_LIST), time); + gtk_dnd_util::GetAtomForTarget( + gtk_dnd_util::TEXT_URI_LIST), time); } for (std::set<GdkAtom>::const_iterator i = custom_formats.begin(); i != custom_formats.end(); ++i) { |