| Index: webkit/glue/plugins/webview_plugin.cc | 
| =================================================================== | 
| --- webkit/glue/plugins/webview_plugin.cc	(revision 69426) | 
| +++ webkit/glue/plugins/webview_plugin.cc	(working copy) | 
| @@ -1,223 +0,0 @@ | 
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
| -// Use of this source code is governed by a BSD-style license that can be | 
| -// found in the LICENSE file. | 
| - | 
| -#include "webkit/glue/plugins/webview_plugin.h" | 
| - | 
| -#include "base/message_loop.h" | 
| -#include "base/metrics/histogram.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebCursorInfo.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebElement.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebInputEvent.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebPluginContainer.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebSize.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebURL.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h" | 
| -#include "third_party/WebKit/WebKit/chromium/public/WebView.h" | 
| -#include "webkit/glue/webpreferences.h" | 
| - | 
| -#if WEBKIT_USING_CG | 
| -#include <CoreGraphics/CGContext.h> | 
| -#elif WEBKIT_USING_SKIA | 
| -#include "skia/ext/platform_canvas.h" | 
| -#endif | 
| - | 
| -using WebKit::WebCanvas; | 
| -using WebKit::WebCursorInfo; | 
| -using WebKit::WebDragData; | 
| -using WebKit::WebDragOperationsMask; | 
| -using WebKit::WebFrame; | 
| -using WebKit::WebImage; | 
| -using WebKit::WebInputEvent; | 
| -using WebKit::WebMouseEvent; | 
| -using WebKit::WebPlugin; | 
| -using WebKit::WebPluginContainer; | 
| -using WebKit::WebPoint; | 
| -using WebKit::WebRect; | 
| -using WebKit::WebSize; | 
| -using WebKit::WebURLError; | 
| -using WebKit::WebURLRequest; | 
| -using WebKit::WebURLResponse; | 
| -using WebKit::WebVector; | 
| -using WebKit::WebView; | 
| - | 
| -WebViewPlugin::WebViewPlugin(WebViewPlugin::Delegate* delegate) | 
| -    : delegate_(delegate), | 
| -      container_(NULL), | 
| -      finished_loading_(false) { | 
| -  web_view_ = WebView::create(this, NULL); | 
| -  web_view_->initializeMainFrame(this); | 
| -} | 
| - | 
| -// static | 
| -WebViewPlugin* WebViewPlugin::Create(WebViewPlugin::Delegate* delegate, | 
| -                                     const WebPreferences& preferences, | 
| -                                     const std::string& html_data, | 
| -                                     const GURL& url) { | 
| -  WebViewPlugin* plugin = new WebViewPlugin(delegate); | 
| -  WebView* web_view = plugin->web_view(); | 
| -  preferences.Apply(web_view); | 
| -  web_view->mainFrame()->loadHTMLString(html_data, url); | 
| -  return plugin; | 
| -} | 
| - | 
| -WebViewPlugin::~WebViewPlugin() { | 
| -  web_view_->close(); | 
| -} | 
| - | 
| -void WebViewPlugin::ReplayReceivedData(WebPlugin* plugin) { | 
| -  if (!response_.isNull()) { | 
| -    plugin->didReceiveResponse(response_); | 
| -    size_t total_bytes = 0; | 
| -    for (std::list<std::string>::iterator it = data_.begin(); | 
| -        it != data_.end(); ++it) { | 
| -      plugin->didReceiveData(it->c_str(), it->length()); | 
| -      total_bytes += it->length(); | 
| -    } | 
| -    UMA_HISTOGRAM_MEMORY_KB("PluginDocument.Memory", (total_bytes / 1024)); | 
| -    UMA_HISTOGRAM_COUNTS("PluginDocument.NumChunks", data_.size()); | 
| -  } | 
| -  if (finished_loading_) { | 
| -    plugin->didFinishLoading(); | 
| -  } | 
| -  if (error_.get()) { | 
| -    plugin->didFailLoading(*error_); | 
| -  } | 
| -} | 
| - | 
| -bool WebViewPlugin::initialize(WebPluginContainer* container) { | 
| -  container_ = container; | 
| -  if (container_) | 
| -    old_title_ = container_->element().getAttribute("title"); | 
| -  return true; | 
| -} | 
| - | 
| -void WebViewPlugin::destroy() { | 
| -  if (delegate_) { | 
| -    delegate_->WillDestroyPlugin(); | 
| -    delegate_ = NULL; | 
| -  } | 
| -  if (container_) | 
| -    container_->element().setAttribute("title", old_title_); | 
| -  container_ = NULL; | 
| -  MessageLoop::current()->DeleteSoon(FROM_HERE, this); | 
| -} | 
| - | 
| -void WebViewPlugin::paint(WebCanvas* canvas, const WebRect& rect) { | 
| -  gfx::Rect paintRect(rect_.Intersect(rect)); | 
| -  if (paintRect.IsEmpty()) | 
| -    return; | 
| - | 
| -  paintRect.Offset(-rect_.x(), -rect_.y()); | 
| - | 
| -#if WEBKIT_USING_CG | 
| -  CGContextRef context = canvas; | 
| -  CGContextTranslateCTM(context, rect_.x(), rect_.y()); | 
| -  CGContextSaveGState(context); | 
| -#elif WEBKIT_USING_SKIA | 
| -  skia::PlatformCanvas* platform_canvas = canvas; | 
| -  platform_canvas->translate(SkIntToScalar(rect_.x()), | 
| -                             SkIntToScalar(rect_.y())); | 
| -  platform_canvas->save(); | 
| -#endif | 
| - | 
| -  web_view_->layout(); | 
| -  web_view_->paint(canvas, paintRect); | 
| - | 
| -#if WEBKIT_USING_SKIA | 
| -  platform_canvas->restore(); | 
| -#elif WEBKIT_USING_CG | 
| -  CGContextRestoreGState(context); | 
| -#endif | 
| -} | 
| - | 
| -// Coordinates are relative to the containing window. | 
| -void WebViewPlugin::updateGeometry( | 
| -    const WebRect& frame_rect, const WebRect& clip_rect, | 
| -    const WebVector<WebRect>& cut_out_rects, bool is_visible) { | 
| -  if (frame_rect != rect_) { | 
| -    rect_ = frame_rect; | 
| -    web_view_->resize(WebSize(frame_rect.width, frame_rect.height)); | 
| -  } | 
| -} | 
| - | 
| -bool WebViewPlugin::handleInputEvent(const WebInputEvent& event, | 
| -                                     WebCursorInfo& cursor) { | 
| -  if (event.type == WebInputEvent::ContextMenu) { | 
| -    if (delegate_) { | 
| -      const WebMouseEvent& mouse_event = | 
| -          reinterpret_cast<const WebMouseEvent&>(event); | 
| -      delegate_->ShowContextMenu(mouse_event); | 
| -    } | 
| -    return true; | 
| -  } | 
| -  current_cursor_ = cursor; | 
| -  bool handled = web_view_->handleInputEvent(event); | 
| -  cursor = current_cursor_; | 
| -  return handled; | 
| -} | 
| - | 
| -void WebViewPlugin::didReceiveResponse(const WebURLResponse& response) { | 
| -  DCHECK(response_.isNull()); | 
| -  response_ = response; | 
| -} | 
| - | 
| -void WebViewPlugin::didReceiveData(const char* data, int data_length) { | 
| -  data_.push_back(std::string(data, data_length)); | 
| -} | 
| - | 
| -void WebViewPlugin::didFinishLoading() { | 
| -  DCHECK(!finished_loading_); | 
| -  finished_loading_ = true; | 
| -} | 
| - | 
| -void WebViewPlugin::didFailLoading(const WebURLError& error) { | 
| -  DCHECK(!error_.get()); | 
| -  error_.reset(new WebURLError(error)); | 
| -} | 
| - | 
| -void WebViewPlugin::setToolTipText(const WebKit::WebString& text, | 
| -                                   WebKit::WebTextDirection hint) { | 
| -  if (container_) | 
| -    container_->element().setAttribute("title", text); | 
| -} | 
| - | 
| -void WebViewPlugin::startDragging(const WebDragData&, | 
| -                                  WebDragOperationsMask, | 
| -                                  const WebImage&, | 
| -                                  const WebPoint&) { | 
| -  // Immediately stop dragging. | 
| -  web_view_->dragSourceSystemDragEnded(); | 
| -} | 
| - | 
| -void WebViewPlugin::didInvalidateRect(const WebRect& rect) { | 
| -  if (container_) | 
| -    container_->invalidateRect(rect); | 
| -} | 
| - | 
| -void WebViewPlugin::didChangeCursor(const WebCursorInfo& cursor) { | 
| -  current_cursor_ = cursor; | 
| -} | 
| - | 
| -void WebViewPlugin::didClearWindowObject(WebFrame* frame) { | 
| -  if (delegate_) | 
| -    delegate_->BindWebFrame(frame); | 
| -} | 
| - | 
| -bool WebViewPlugin::canHandleRequest(WebFrame* frame, | 
| -                                     const WebURLRequest& request) { | 
| -  return GURL(request.url()).SchemeIs("chrome"); | 
| -} | 
| - | 
| -WebURLError WebViewPlugin::cancelledError(WebFrame* frame, | 
| -                                          const WebURLRequest& request) { | 
| -  // Return an error with a non-zero reason so isNull() on the corresponding | 
| -  // ResourceError is false. | 
| -  WebURLError error; | 
| -  error.domain = "WebViewPlugin"; | 
| -  error.reason = -1; | 
| -  error.unreachableURL = request.url(); | 
| -  return error; | 
| -} | 
|  |