| Index: chrome/browser/views/info_bubble.cc | 
| =================================================================== | 
| --- chrome/browser/views/info_bubble.cc	(revision 17379) | 
| +++ chrome/browser/views/info_bubble.cc	(working copy) | 
| @@ -9,6 +9,7 @@ | 
| #include "app/resource_bundle.h" | 
| #include "chrome/browser/browser_window.h" | 
| #include "chrome/browser/views/frame/browser_view.h" | 
| +#include "chrome/browser/window_sizer.h" | 
| #include "chrome/common/notification_service.h" | 
| #include "chrome/common/notification_type.h" | 
| #include "grit/theme_resources.h" | 
| @@ -16,7 +17,6 @@ | 
| #include "views/window/window.h" | 
|  | 
| #if defined(OS_WIN) | 
| -#include "app/win_util.h" | 
| #include "base/win_util.h" | 
| #endif | 
|  | 
| @@ -83,7 +83,7 @@ | 
| #if defined(OS_WIN) | 
| window->ShowWindow(SW_SHOW); | 
| #else | 
| -  NOTREACHED(); | 
| +  static_cast<WidgetGtk*>(window)->Show(); | 
| #endif | 
| return window; | 
| } | 
| @@ -134,6 +134,8 @@ | 
|  | 
| #if defined(OS_WIN) | 
| WidgetWin::Init(parent->GetNativeWindow(), bounds, true); | 
| +#else | 
| +  WidgetGtk::Init(GTK_WIDGET(parent->GetNativeWindow()), bounds, true); | 
| #endif | 
| SetContentsView(content_view_); | 
| // The preferred size may differ when parented. Ask for the bounds again | 
| @@ -148,8 +150,6 @@ | 
| SWP_NOACTIVATE | SWP_NOREDRAW | SWP_NOZORDER); | 
| // Invoke ChangeSize, otherwise layered window isn't updated correctly. | 
| ChangeSize(0, CSize(parented_bounds.width(), parented_bounds.height())); | 
| -#else | 
| -    NOTIMPLEMENTED(); | 
| #endif | 
| } | 
|  | 
| @@ -254,12 +254,10 @@ | 
|  | 
| gfx::Rect InfoBubble::ContentView::CalculateWindowBoundsAndAjust( | 
| const gfx::Rect& position_relative_to) { | 
| -#if defined(OS_WIN) | 
| -  gfx::Rect monitor_bounds = win_util::GetMonitorBoundsForRect( | 
| -      position_relative_to); | 
| -#else | 
| -  gfx::Rect monitor_bounds; | 
| -#endif | 
| +  scoped_ptr<WindowSizer::MonitorInfoProvider> monitor_provider( | 
| +      WindowSizer::CreateDefaultMonitorInfoProvider()); | 
| +  gfx::Rect monitor_bounds( | 
| +      monitor_provider->GetMonitorWorkAreaMatching(position_relative_to)); | 
| // Calculate the bounds using TOP_LEFT (the default). | 
| gfx::Rect window_bounds = CalculateWindowBounds(position_relative_to); | 
| if (monitor_bounds.IsEmpty() || monitor_bounds.Contains(window_bounds)) | 
|  |