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/browser_plugin/browser_plugin.h" | 5 #include "content/renderer/browser_plugin/browser_plugin.h" |
6 | 6 |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #if defined (OS_WIN) | 9 #if defined (OS_WIN) |
10 #include "base/sys_info.h" | 10 #include "base/sys_info.h" |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
93 void BrowserPlugin::Cleanup() { | 93 void BrowserPlugin::Cleanup() { |
94 if (damage_buffer_) | 94 if (damage_buffer_) |
95 FreeDamageBuffer(); | 95 FreeDamageBuffer(); |
96 } | 96 } |
97 | 97 |
98 std::string BrowserPlugin::GetSrcAttribute() const { | 98 std::string BrowserPlugin::GetSrcAttribute() const { |
99 return src_; | 99 return src_; |
100 } | 100 } |
101 | 101 |
102 void BrowserPlugin::SetSrcAttribute(const std::string& src) { | 102 void BrowserPlugin::SetSrcAttribute(const std::string& src) { |
103 if (src == src_ && !guest_crashed_) | 103 if (src.empty() || (src == src_ && !guest_crashed_)) |
104 return; | 104 return; |
105 | 105 |
106 // If we haven't created the guest yet, do so now, if |src| is not empty and | 106 // If we haven't created the guest yet, do so now, we will navigate it right |
Charlie Reis
2012/10/15 18:57:28
nit: Start a new sentence at "we will".
lazyboy
2012/10/15 20:45:57
Done.
| |
107 // we will navigate it right after creation. If |src| is empty, we can delay | 107 // after creation. If |src| is empty, we can delay the creation until we |
108 // the creation until we acutally need it. | 108 // acutally need it. |
109 if (!navigate_src_sent_ && !src.empty()) { | 109 if (!navigate_src_sent_) { |
110 BrowserPluginManager::Get()->Send( | 110 BrowserPluginManager::Get()->Send( |
111 new BrowserPluginHostMsg_CreateGuest( | 111 new BrowserPluginHostMsg_CreateGuest( |
112 render_view_->GetRoutingID(), | 112 render_view_->GetRoutingID(), |
113 instance_id_, | 113 instance_id_, |
114 storage_partition_id_, | 114 storage_partition_id_, |
115 persist_storage_)); | 115 persist_storage_)); |
116 } | 116 } |
117 | 117 |
118 if (navigate_src_sent_ || !src.empty()) { | 118 scoped_ptr<BrowserPluginHostMsg_ResizeGuest_Params> params( |
119 scoped_ptr<BrowserPluginHostMsg_ResizeGuest_Params> params( | 119 GetPendingResizeParams()); |
120 GetPendingResizeParams()); | 120 DCHECK(!params->resize_pending); |
121 DCHECK(!params->resize_pending); | |
122 | 121 |
123 BrowserPluginManager::Get()->Send( | 122 BrowserPluginManager::Get()->Send( |
124 new BrowserPluginHostMsg_NavigateGuest( | 123 new BrowserPluginHostMsg_NavigateGuest( |
125 render_view_->GetRoutingID(), | 124 render_view_->GetRoutingID(), |
126 instance_id_, | 125 instance_id_, |
127 src, | 126 src, |
128 *params)); | 127 *params)); |
129 // Record that we sent a NavigateGuest message to embedder. Once we send | 128 // Record that we sent a NavigateGuest message to embedder. |
130 // such a message, subsequent SetSrcAttribute() calls must always send | 129 // Once this instance has navigated, the storage partition cannot be changed, |
131 // NavigateGuest messages to the embedder (even if |src| is empty), so | 130 // so this value is used for enforcing this. |
132 // resize works correctly for all cases (e.g. The embedder can reset the | 131 navigate_src_sent_ = true; |
133 // guest's |src| to empty value, resize and then set the |src| to a | |
134 // non-empty value). | |
135 // Additionally, once this instance has navigated, the storage partition | |
136 // cannot be changed, so this value is used for enforcing this. | |
137 navigate_src_sent_ = true; | |
138 } | |
139 src_ = src; | 132 src_ = src; |
140 guest_crashed_ = false; | 133 guest_crashed_ = false; |
141 } | 134 } |
142 | 135 |
143 std::string BrowserPlugin::GetPartitionAttribute() const { | 136 std::string BrowserPlugin::GetPartitionAttribute() const { |
144 std::string value; | 137 std::string value; |
145 if (persist_storage_) | 138 if (persist_storage_) |
146 value.append(kPersistPrefix); | 139 value.append(kPersistPrefix); |
147 | 140 |
148 value.append(storage_partition_id_); | 141 value.append(storage_partition_id_); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
190 if (LowerCaseEqualsASCII(attributeName, kSrcAttribute)) { | 183 if (LowerCaseEqualsASCII(attributeName, kSrcAttribute)) { |
191 src = params.attributeValues[i].utf8(); | 184 src = params.attributeValues[i].utf8(); |
192 } else if (LowerCaseEqualsASCII(attributeName, kPartitionAttribute)) { | 185 } else if (LowerCaseEqualsASCII(attributeName, kPartitionAttribute)) { |
193 std::string error; | 186 std::string error; |
194 SetPartitionAttribute(params.attributeValues[i].utf8(), error); | 187 SetPartitionAttribute(params.attributeValues[i].utf8(), error); |
195 } | 188 } |
196 } | 189 } |
197 | 190 |
198 // Set the 'src' attribute last, as it will set the has_navigated_ flag to | 191 // Set the 'src' attribute last, as it will set the has_navigated_ flag to |
199 // true, which prevents changing the 'partition' attribute. | 192 // true, which prevents changing the 'partition' attribute. |
200 if (!src.empty()) | 193 SetSrcAttribute(src); |
201 SetSrcAttribute(src); | |
202 } | 194 } |
203 | 195 |
204 float BrowserPlugin::GetDeviceScaleFactor() const { | 196 float BrowserPlugin::GetDeviceScaleFactor() const { |
205 if (!render_view_) | 197 if (!render_view_) |
206 return 1.0f; | 198 return 1.0f; |
207 return render_view_->GetWebView()->deviceScaleFactor(); | 199 return render_view_->GetWebView()->deviceScaleFactor(); |
208 } | 200 } |
209 | 201 |
210 void BrowserPlugin::RemoveEventListeners() { | 202 void BrowserPlugin::RemoveEventListeners() { |
211 EventListenerMap::iterator event_listener_map_iter = | 203 EventListenerMap::iterator event_listener_map_iter = |
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
757 void* notify_data) { | 749 void* notify_data) { |
758 } | 750 } |
759 | 751 |
760 void BrowserPlugin::didFailLoadingFrameRequest( | 752 void BrowserPlugin::didFailLoadingFrameRequest( |
761 const WebKit::WebURL& url, | 753 const WebKit::WebURL& url, |
762 void* notify_data, | 754 void* notify_data, |
763 const WebKit::WebURLError& error) { | 755 const WebKit::WebURLError& error) { |
764 } | 756 } |
765 | 757 |
766 } // namespace content | 758 } // namespace content |
OLD | NEW |