dom-ui settings: Add setting for detault zoom level.

BUG=11321
TEST=Exercise the default zoom level setting in the 'Under the hood' panel.
Review URL: http://codereview.chromium.org/3807001

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63702 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc
index c7e68ea..2624094 100644
--- a/chrome/browser/tab_contents/tab_contents.cc
+++ b/chrome/browser/tab_contents/tab_contents.cc
@@ -167,6 +167,7 @@
 // The list of prefs we want to observe.
 const char* kPrefsToObserve[] = {
   prefs::kAlternateErrorPagesEnabled,
+  prefs::kDefaultZoomLevel,
   prefs::kWebKitJavaEnabled,
   prefs::kWebKitJavascriptEnabled,
   prefs::kWebKitLoadsImagesAutomatically,
@@ -1465,12 +1466,10 @@
     hs->SetPageTitle(entry.virtual_url(), entry.title());
 }
 
-int TabContents::GetZoomPercent(bool* enable_increment,
-                                bool* enable_decrement) {
-  *enable_decrement = *enable_increment = false;
+double TabContents::GetZoomLevel() const {
   HostZoomMap* zoom_map = profile()->GetHostZoomMap();
   if (!zoom_map)
-    return 100;
+    return 0;
 
   double zoom_level;
   if (temporary_zoom_settings_) {
@@ -1479,9 +1478,14 @@
   } else {
     zoom_level = zoom_map->GetZoomLevel(GetURL());
   }
+  return zoom_level;
+}
 
+int TabContents::GetZoomPercent(bool* enable_increment,
+                                bool* enable_decrement) {
+  *enable_decrement = *enable_increment = false;
   int percent = static_cast<int>(
-      WebKit::WebView::zoomLevelToZoomFactor(zoom_level) * 100);
+      WebKit::WebView::zoomLevelToZoomFactor(GetZoomLevel()) * 100);
   *enable_decrement = percent > minimum_zoom_percent_;
   *enable_increment = percent < maximum_zoom_percent_;
   return percent;
@@ -1759,6 +1763,10 @@
   render_view_host()->UpdateWebPreferences(GetWebkitPrefs());
 }
 
+void TabContents::UpdateZoomLevel() {
+  render_view_host()->SetZoomLevel(GetZoomLevel());
+}
+
 void TabContents::UpdateMaxPageIDIfNecessary(SiteInstance* site_instance,
                                              RenderViewHost* rvh) {
   // If we are creating a RVH for a restored controller, then we might
@@ -3081,6 +3089,8 @@
       } else if ((*pref_name_in == prefs::kDefaultCharset) ||
                  StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) {
         UpdateWebPreferences();
+      } else if (*pref_name_in == prefs::kDefaultZoomLevel) {
+        UpdateZoomLevel();
       } else {
         NOTREACHED() << "unexpected pref change notification" << *pref_name_in;
       }