OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/render_thread_impl.h" | 5 #include "content/renderer/render_thread_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <map> | 9 #include <map> |
10 #include <vector> | 10 #include <vector> |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 const int64 kLongIdleHandlerDelayMs = 30*1000; | 136 const int64 kLongIdleHandlerDelayMs = 30*1000; |
137 const int kIdleCPUUsageThresholdInPercents = 3; | 137 const int kIdleCPUUsageThresholdInPercents = 3; |
138 | 138 |
139 // Keep the global RenderThreadImpl in a TLS slot so it is impossible to access | 139 // Keep the global RenderThreadImpl in a TLS slot so it is impossible to access |
140 // incorrectly from the wrong thread. | 140 // incorrectly from the wrong thread. |
141 base::LazyInstance<base::ThreadLocalPointer<RenderThreadImpl> > | 141 base::LazyInstance<base::ThreadLocalPointer<RenderThreadImpl> > |
142 lazy_tls = LAZY_INSTANCE_INITIALIZER; | 142 lazy_tls = LAZY_INSTANCE_INITIALIZER; |
143 | 143 |
144 class RenderViewZoomer : public RenderViewVisitor { | 144 class RenderViewZoomer : public RenderViewVisitor { |
145 public: | 145 public: |
146 RenderViewZoomer(const std::string& host, double zoom_level) | 146 RenderViewZoomer(const std::string& scheme, |
147 : host_(host), zoom_level_(zoom_level) { | 147 const std::string& host, |
| 148 double zoom_level) : scheme_(scheme), |
| 149 host_(host), |
| 150 zoom_level_(zoom_level) { |
148 } | 151 } |
149 | 152 |
150 virtual bool Visit(RenderView* render_view) OVERRIDE { | 153 virtual bool Visit(RenderView* render_view) OVERRIDE { |
151 WebView* webview = render_view->GetWebView(); | 154 WebView* webview = render_view->GetWebView(); |
152 WebDocument document = webview->mainFrame()->document(); | 155 WebDocument document = webview->mainFrame()->document(); |
153 | 156 |
154 // Don't set zoom level for full-page plugin since they don't use the same | 157 // Don't set zoom level for full-page plugin since they don't use the same |
155 // zoom settings. | 158 // zoom settings. |
156 if (document.isPluginDocument()) | 159 if (document.isPluginDocument()) |
157 return true; | 160 return true; |
158 | 161 GURL url(document.url()); |
159 if (net::GetHostOrSpecFromURL(GURL(document.url())) == host_) | 162 // Empty scheme works as wildcard that matches any scheme, |
| 163 if ((net::GetHostOrSpecFromURL(url) == host_) && |
| 164 (scheme_.empty() || scheme_ == url.scheme())) { |
160 webview->setZoomLevel(false, zoom_level_); | 165 webview->setZoomLevel(false, zoom_level_); |
| 166 } |
161 return true; | 167 return true; |
162 } | 168 } |
163 | 169 |
164 private: | 170 private: |
165 std::string host_; | 171 const std::string scheme_; |
166 double zoom_level_; | 172 const std::string host_; |
| 173 const double zoom_level_; |
167 | 174 |
168 DISALLOW_COPY_AND_ASSIGN(RenderViewZoomer); | 175 DISALLOW_COPY_AND_ASSIGN(RenderViewZoomer); |
169 }; | 176 }; |
170 | 177 |
171 std::string HostToCustomHistogramSuffix(const std::string& host) { | 178 std::string HostToCustomHistogramSuffix(const std::string& host) { |
172 if (host == "mail.google.com") | 179 if (host == "mail.google.com") |
173 return ".gmail"; | 180 return ".gmail"; |
174 if (host == "docs.google.com" || host == "drive.google.com") | 181 if (host == "docs.google.com" || host == "drive.google.com") |
175 return ".docs"; | 182 return ".docs"; |
176 if (host == "plus.google.com") | 183 if (host == "plus.google.com") |
(...skipping 896 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1073 } | 1080 } |
1074 | 1081 |
1075 void RenderThreadImpl::DoNotSuspendWebKitSharedTimer() { | 1082 void RenderThreadImpl::DoNotSuspendWebKitSharedTimer() { |
1076 suspend_webkit_shared_timer_ = false; | 1083 suspend_webkit_shared_timer_ = false; |
1077 } | 1084 } |
1078 | 1085 |
1079 void RenderThreadImpl::DoNotNotifyWebKitOfModalLoop() { | 1086 void RenderThreadImpl::DoNotNotifyWebKitOfModalLoop() { |
1080 notify_webkit_of_modal_loop_ = false; | 1087 notify_webkit_of_modal_loop_ = false; |
1081 } | 1088 } |
1082 | 1089 |
1083 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& host, | 1090 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& scheme, |
| 1091 const std::string& host, |
1084 double zoom_level) { | 1092 double zoom_level) { |
1085 RenderViewZoomer zoomer(host, zoom_level); | 1093 RenderViewZoomer zoomer(scheme, host, zoom_level); |
1086 RenderView::ForEach(&zoomer); | 1094 RenderView::ForEach(&zoomer); |
1087 } | 1095 } |
1088 | 1096 |
1089 bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) { | 1097 bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) { |
1090 ObserverListBase<RenderProcessObserver>::Iterator it(observers_); | 1098 ObserverListBase<RenderProcessObserver>::Iterator it(observers_); |
1091 RenderProcessObserver* observer; | 1099 RenderProcessObserver* observer; |
1092 while ((observer = it.GetNext()) != NULL) { | 1100 while ((observer = it.GetNext()) != NULL) { |
1093 if (observer->OnControlMessageReceived(msg)) | 1101 if (observer->OnControlMessageReceived(msg)) |
1094 return true; | 1102 return true; |
1095 } | 1103 } |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1253 | 1261 |
1254 void RenderThreadImpl::SetFlingCurveParameters( | 1262 void RenderThreadImpl::SetFlingCurveParameters( |
1255 const std::vector<float>& new_touchpad, | 1263 const std::vector<float>& new_touchpad, |
1256 const std::vector<float>& new_touchscreen) { | 1264 const std::vector<float>& new_touchscreen) { |
1257 webkit_platform_support_->SetFlingCurveParameters(new_touchpad, | 1265 webkit_platform_support_->SetFlingCurveParameters(new_touchpad, |
1258 new_touchscreen); | 1266 new_touchscreen); |
1259 | 1267 |
1260 } | 1268 } |
1261 | 1269 |
1262 } // namespace content | 1270 } // namespace content |
OLD | NEW |