OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "webkit/glue/plugins/webview_plugin.h" | 5 #include "webkit/glue/plugins/webview_plugin.h" |
6 | 6 |
| 7 #include "base/histogram.h" |
7 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
8 #include "third_party/WebKit/WebKit/chromium/public/WebCursorInfo.h" | 9 #include "third_party/WebKit/WebKit/chromium/public/WebCursorInfo.h" |
9 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" | 10 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" |
10 #include "third_party/WebKit/WebKit/chromium/public/WebPluginContainer.h" | 11 #include "third_party/WebKit/WebKit/chromium/public/WebPluginContainer.h" |
11 #include "third_party/WebKit/WebKit/chromium/public/WebSettings.h" | 12 #include "third_party/WebKit/WebKit/chromium/public/WebSettings.h" |
12 #include "third_party/WebKit/WebKit/chromium/public/WebSize.h" | 13 #include "third_party/WebKit/WebKit/chromium/public/WebSize.h" |
13 #include "third_party/WebKit/WebKit/chromium/public/WebURL.h" | 14 #include "third_party/WebKit/WebKit/chromium/public/WebURL.h" |
14 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h" | 15 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h" |
15 #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h" | 16 #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h" |
16 #include "third_party/WebKit/WebKit/chromium/public/WebView.h" | 17 #include "third_party/WebKit/WebKit/chromium/public/WebView.h" |
(...skipping 28 matching lines...) Expand all Loading... |
45 finished_loading_(false) { | 46 finished_loading_(false) { |
46 web_view_ = WebView::create(this, NULL); | 47 web_view_ = WebView::create(this, NULL); |
47 web_view_->initializeMainFrame(this); | 48 web_view_->initializeMainFrame(this); |
48 } | 49 } |
49 | 50 |
50 WebViewPlugin::~WebViewPlugin() { | 51 WebViewPlugin::~WebViewPlugin() { |
51 web_view_->close(); | 52 web_view_->close(); |
52 } | 53 } |
53 | 54 |
54 void WebViewPlugin::ReplayReceivedData(WebPlugin* plugin) { | 55 void WebViewPlugin::ReplayReceivedData(WebPlugin* plugin) { |
55 if (response_.get()) { | 56 if (!response_.isNull()) { |
56 plugin->didReceiveResponse(*response_); | 57 plugin->didReceiveResponse(response_); |
57 plugin->didReceiveData(data_.c_str(), data_.length()); | 58 size_t total_bytes = 0; |
| 59 for (std::list<std::string>::iterator it = data_.begin(); |
| 60 it != data_.end(); ++it) { |
| 61 plugin->didReceiveData(it->c_str(), it->length()); |
| 62 total_bytes += it->length(); |
| 63 } |
| 64 UMA_HISTOGRAM_MEMORY_KB("PluginDocument.Memory", (total_bytes / 1024)); |
| 65 UMA_HISTOGRAM_COUNTS("PluginDocument.NumChunks", data_.size()); |
58 } | 66 } |
59 if (finished_loading_) { | 67 if (finished_loading_) { |
60 plugin->didFinishLoading(); | 68 plugin->didFinishLoading(); |
61 } | 69 } |
62 if (error_.get()) { | 70 if (error_.get()) { |
63 plugin->didFailLoading(*error_); | 71 plugin->didFailLoading(*error_); |
64 } | 72 } |
65 } | 73 } |
66 | 74 |
67 bool WebViewPlugin::initialize(WebPluginContainer* container) { | 75 bool WebViewPlugin::initialize(WebPluginContainer* container) { |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 | 124 |
117 bool WebViewPlugin::handleInputEvent(const WebInputEvent& event, | 125 bool WebViewPlugin::handleInputEvent(const WebInputEvent& event, |
118 WebCursorInfo& cursor) { | 126 WebCursorInfo& cursor) { |
119 current_cursor_ = cursor; | 127 current_cursor_ = cursor; |
120 bool handled = web_view_->handleInputEvent(event); | 128 bool handled = web_view_->handleInputEvent(event); |
121 cursor = current_cursor_; | 129 cursor = current_cursor_; |
122 return handled; | 130 return handled; |
123 } | 131 } |
124 | 132 |
125 void WebViewPlugin::didReceiveResponse(const WebURLResponse& response) { | 133 void WebViewPlugin::didReceiveResponse(const WebURLResponse& response) { |
126 DCHECK(!response_.get()); | 134 DCHECK(response_.isNull()); |
127 response_.reset(new WebURLResponse(response)); | 135 response_ = response; |
128 } | 136 } |
129 | 137 |
130 void WebViewPlugin::didReceiveData(const char* data, int data_length) { | 138 void WebViewPlugin::didReceiveData(const char* data, int data_length) { |
131 data_.append(data, data_length); | 139 data_.push_back(std::string(data, data_length)); |
132 } | 140 } |
133 | 141 |
134 void WebViewPlugin::didFinishLoading() { | 142 void WebViewPlugin::didFinishLoading() { |
135 DCHECK(!finished_loading_); | 143 DCHECK(!finished_loading_); |
136 finished_loading_ = true; | 144 finished_loading_ = true; |
137 } | 145 } |
138 | 146 |
139 void WebViewPlugin::didFailLoading(const WebURLError& error) { | 147 void WebViewPlugin::didFailLoading(const WebURLError& error) { |
140 DCHECK(!error_.get()); | 148 DCHECK(!error_.get()); |
141 error_.reset(new WebURLError(error)); | 149 error_.reset(new WebURLError(error)); |
(...skipping 29 matching lines...) Expand all Loading... |
171 WebURLError WebViewPlugin::cancelledError(WebFrame* frame, | 179 WebURLError WebViewPlugin::cancelledError(WebFrame* frame, |
172 const WebURLRequest& request) { | 180 const WebURLRequest& request) { |
173 // Return an error with a non-zero reason so isNull() on the corresponding | 181 // Return an error with a non-zero reason so isNull() on the corresponding |
174 // ResourceError is false. | 182 // ResourceError is false. |
175 WebURLError error; | 183 WebURLError error; |
176 error.domain = "WebViewPlugin"; | 184 error.domain = "WebViewPlugin"; |
177 error.reason = -1; | 185 error.reason = -1; |
178 error.unreachableURL = request.url(); | 186 error.unreachableURL = request.url(); |
179 return error; | 187 return error; |
180 } | 188 } |
OLD | NEW |