diff --git a/chrome/browser/gtk/bookmark_bar_gtk.cc b/chrome/browser/gtk/bookmark_bar_gtk.cc
index 67207d23a219363aff967580afa9e473f7fcbf9b..1ecf5c9e282053558d6e94ad2cf4c250418ac74e 100644
--- a/chrome/browser/gtk/bookmark_bar_gtk.cc
+++ b/chrome/browser/gtk/bookmark_bar_gtk.cc
@@ -593,8 +593,6 @@ void BookmarkBarGtk::ConnectFolderButtonEvents(GtkWidget* widget) {
                    G_CALLBACK(OnButtonPressed), this);
   g_signal_connect(G_OBJECT(widget), "clicked",
                    G_CALLBACK(OnFolderClicked), this);
-
-  ViewIDUtil::SetID(widget, VIEW_ID_BOOKMARK_MENU);
 }
 
 const BookmarkNode* BookmarkBarGtk::GetNodeForToolButton(GtkWidget* widget) {
diff --git a/chrome/browser/gtk/gtk_chrome_button.cc b/chrome/browser/gtk/gtk_chrome_button.cc
index 35cd4f24bee38424c686dad94186021124f53187..01d6db709816e38d7eb6fd449d2469105a2ee5ef 100644
--- a/chrome/browser/gtk/gtk_chrome_button.cc
+++ b/chrome/browser/gtk/gtk_chrome_button.cc
@@ -44,7 +44,7 @@ static void gtk_chrome_button_class_init(GtkChromeButtonClass* button_class) {
       "  GtkButton::child-displacement-x = 0"
       "  GtkButton::child-displacement-y = 0"
       "}"
-      "widget \"*chrome-button\" style \"chrome-button\"");
+      "widget_class \"*.<GtkChromeButton>\" style \"chrome-button\"");
 
   GObjectClass* gobject_class = G_OBJECT_CLASS(button_class);
   GtkWidgetClass* widget_class = reinterpret_cast<GtkWidgetClass*>(
@@ -81,7 +81,6 @@ static void gtk_chrome_button_init(GtkChromeButton* button) {
   priv->paint_state = -1;
   priv->use_gtk_rendering = FALSE;
 
-  gtk_widget_set_name(GTK_WIDGET(button), "chrome-button");
   gtk_widget_set_app_paintable(GTK_WIDGET(button), TRUE);
 
   GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS);
diff --git a/chrome/browser/gtk/gtk_chrome_link_button.cc b/chrome/browser/gtk/gtk_chrome_link_button.cc
index defb188fbbffe7a4ce87e1a4c66b3a57ddc103de..886da8e0916a066d2dab8e8f5304318c94dbed31 100644
--- a/chrome/browser/gtk/gtk_chrome_link_button.cc
+++ b/chrome/browser/gtk/gtk_chrome_link_button.cc
@@ -30,7 +30,7 @@ void SetLinkButtonStyle() {
       "  xthickness = 0"
       "  ythickness = 0"
       "}"
-      "widget \"*chrome-link-button\" style \"chrome-link-button\"");
+      "widget_class \"*.<GtkChromeLinkButton>\" style \"chrome-link-button\"");
 }
 
 }  // namespace
@@ -187,7 +187,6 @@ static void gtk_chrome_link_button_init(GtkChromeLinkButton* button) {
   button->text = NULL;
 
   gtk_container_add(GTK_CONTAINER(button), button->label);
-  gtk_widget_set_name(GTK_WIDGET(button), "chrome-link-button");
   gtk_widget_set_app_paintable(GTK_WIDGET(button), TRUE);
 }
 
diff --git a/chrome/browser/gtk/view_id_util.cc b/chrome/browser/gtk/view_id_util.cc
index fe6501fd71bad4edfa6dc3132d679eab220f2be4..9a8a8759efdcc2a7d00f71ce7705765d3516da15 100644
--- a/chrome/browser/gtk/view_id_util.cc
+++ b/chrome/browser/gtk/view_id_util.cc
@@ -5,9 +5,12 @@
 #include "chrome/browser/gtk/view_id_util.h"
 
 #include <stdint.h>
+#include <string>
 
 #include <gtk/gtk.h>
 
+#include "base/logging.h"
+
 namespace {
 
 const char kViewIDString[] = "__VIEW_ID__";
@@ -54,9 +57,66 @@ void SearchForWidgetWithViewID(GtkWidget* widget, gpointer data) {
   }
 }
 
+const char* GetNameFromID(ViewID id) {
+  switch (id) {
+    case VIEW_ID_TOOLBAR:
+      return "chrome-toolbar";
+
+    case VIEW_ID_BACK_BUTTON:
+      return "chrome-toolbar-back-button";
+
+    case VIEW_ID_FORWARD_BUTTON:
+      return "chrome-toolbar-forward-button";
+
+    case VIEW_ID_RELOAD_BUTTON:
+      return "chrome-toolbar-reload-button";
+
+    case VIEW_ID_HOME_BUTTON:
+      return "chrome-toolbar-home-button";
+
+    case VIEW_ID_STAR_BUTTON:
+      return "chrome-toolbar-star-button";
+
+    case VIEW_ID_LOCATION_BAR:
+      return "chrome-location-bar";
+
+    case VIEW_ID_GO_BUTTON:
+      return "chrome-toolbar-go-button";
+
+    case VIEW_ID_PAGE_MENU:
+      return "chrome-page-menu";
+
+    case VIEW_ID_APP_MENU:
+      return "chrome-app-menu";
+
+    case VIEW_ID_AUTOCOMPLETE:
+      return "chrome-autocomplete-edit";
+
+    case VIEW_ID_BOOKMARK_MENU:
+      return "chrome-bookmark-menu";
+
+    case VIEW_ID_BOOKMARK_BAR:
+      return "chrome-bookmark-bar";
+
+    case VIEW_ID_FIND_IN_PAGE_TEXT_FIELD:
+      return "chrome-find-in-page-entry";
+
+    // These are never hit because the tab container uses the delegate to
+    // set its ID.
+    case VIEW_ID_TAB_CONTAINER:
+    case VIEW_ID_TAB_CONTAINER_FOCUS_VIEW:
+    default:
+      NOTREACHED();
+      return NULL;
+  }
+}
+
 }  // namespace
 
 void ViewIDUtil::SetID(GtkWidget* widget, ViewID id) {
+  const char* name = GetNameFromID(id);
+  if (name)
+    gtk_widget_set_name(widget, name);
   g_object_set_data(G_OBJECT(widget), kViewIDString,
                     reinterpret_cast<void*>(id));
 }
diff --git a/chrome/browser/gtk/view_id_util.h b/chrome/browser/gtk/view_id_util.h
index 1ec65e868894c235cadcd8b32be077c727310676..23e67a62e4a82264cfd4fdf696260572b99f7460 100644
--- a/chrome/browser/gtk/view_id_util.h
+++ b/chrome/browser/gtk/view_id_util.h
@@ -17,6 +17,8 @@ class ViewIDUtil {
     virtual GtkWidget* GetWidgetForViewID(ViewID id) = 0;
   };
 
+  // If you set the ID via this function, it will also set the name of your
+  // widget to a human-readable value for debugging.
   static void SetID(GtkWidget* widget, ViewID id);
 
   static GtkWidget* GetWidget(GtkWidget* root, ViewID id);