Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1013)

Unified Diff: webkit/tools/test_shell/webwidget_host_mac.mm

Issue 15028002: Delete test_shell. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add dummy test_shell build target. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/tools/test_shell/webwidget_host_mac.mm
diff --git a/webkit/tools/test_shell/webwidget_host_mac.mm b/webkit/tools/test_shell/webwidget_host_mac.mm
deleted file mode 100644
index d96da2681fe5efe46dd1c7d160f217b4b9daa049..0000000000000000000000000000000000000000
--- a/webkit/tools/test_shell/webwidget_host_mac.mm
+++ /dev/null
@@ -1,286 +0,0 @@
-// Copyright (c) 2012 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.
-
-#import <Cocoa/Cocoa.h>
-
-#include "webkit/tools/test_shell/webwidget_host.h"
-
-#include "base/logging.h"
-#include "skia/ext/platform_canvas.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/mac/WebInputEventFactory.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/mac/WebScreenInfoFactory.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebPopupMenu.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h"
-#include "ui/gfx/rect.h"
-#include "ui/gfx/size.h"
-#include "webkit/glue/webkit_glue.h"
-#include "webkit/tools/test_shell/test_shell.h"
-
-using WebKit::WebInputEvent;
-using WebKit::WebInputEventFactory;
-using WebKit::WebKeyboardEvent;
-using WebKit::WebMouseEvent;
-using WebKit::WebMouseWheelEvent;
-using WebKit::WebPopupMenu;
-using WebKit::WebScreenInfo;
-using WebKit::WebScreenInfoFactory;
-using WebKit::WebSize;
-using WebKit::WebWidgetClient;
-
-/*static*/
-WebWidgetHost* WebWidgetHost::Create(NSView* parent_view,
- WebWidgetClient* client) {
- WebWidgetHost* host = new WebWidgetHost();
-
- NSRect content_rect = [parent_view frame];
- content_rect.origin.y += 64;
- content_rect.size.height -= 64;
- host->view_ = [[NSView alloc] initWithFrame:content_rect];
- [parent_view addSubview:host->view_];
-
- // ui::SetWindowUserData(host->hwnd_, host);
-
- host->webwidget_ = WebPopupMenu::create(client);
- host->webwidget_->resize(WebSize(NSWidth(content_rect),
- NSHeight(content_rect)));
- return host;
-}
-
-/*static*/
-void WebWidgetHost::HandleEvent(NSView* view, NSEvent* event) {
- /* TODO(port): rig up a way to get to the host */
- WebWidgetHost* host = NULL;
- if (host) {
- switch ([event type]) {
- case NSLeftMouseDown:
- case NSLeftMouseUp:
- case NSRightMouseDown:
- case NSRightMouseUp:
- case NSOtherMouseDown:
- case NSOtherMouseUp:
- case NSMouseEntered:
- case NSMouseExited:
- host->MouseEvent(event);
- break;
-
- case NSScrollWheel:
- host->WheelEvent(event);
- break;
-
- case NSKeyDown:
- case NSKeyUp:
- host->KeyEvent(event);
- break;
-
- case NSAppKitDefined:
- switch ([event subtype]) {
- case NSApplicationActivatedEventType:
- host->SetFocus(true);
- break;
- case NSApplicationDeactivatedEventType:
- host->SetFocus(false);
- break;
- }
- break;
- }
- }
-}
-
-void WebWidgetHost::DidInvalidateRect(const gfx::Rect& damaged_rect) {
-#ifndef NDEBUG
- DLOG_IF(WARNING, painting_) << "unexpected invalidation while painting";
-#endif
-
- // If this invalidate overlaps with a pending scroll, then we have to
- // downgrade to invalidating the scroll rect.
- if (damaged_rect.Intersects(scroll_rect_)) {
- paint_rect_.Union(scroll_rect_);
- ResetScrollRect();
- }
- paint_rect_.Union(damaged_rect);
-
- NSRect r = NSRectFromCGRect(damaged_rect.ToCGRect());
- // flip to cocoa coordinates
- r.origin.y = [view_ frame].size.height - r.size.height - r.origin.y;
- [view_ setNeedsDisplayInRect:r];
-}
-
-void WebWidgetHost::DidScrollRect(int dx, int dy, const gfx::Rect& clip_rect) {
- DCHECK(dx || dy);
-
- // If we already have a pending scroll operation or if this scroll operation
- // intersects the existing paint region, then just failover to invalidating.
- if (!scroll_rect_.IsEmpty() || paint_rect_.Intersects(clip_rect)) {
- paint_rect_.Union(scroll_rect_);
- ResetScrollRect();
- paint_rect_.Union(clip_rect);
- }
-
- // We will perform scrolling lazily, when requested to actually paint.
- scroll_rect_ = clip_rect;
- scroll_dx_ = dx;
- scroll_dy_ = dy;
-
- NSRect r = NSRectFromCGRect(clip_rect.ToCGRect());
- // flip to cocoa coordinates
- r.origin.y = [view_ frame].size.height - r.size.height - r.origin.y;
- [view_ setNeedsDisplayInRect:r];
-}
-
-void WebWidgetHost::ScheduleComposite() {
- if (!webwidget_)
- return;
- WebSize size = webwidget_->size();
- NSRect r = NSMakeRect(0, 0, size.width, size.height);
- [view_ setNeedsDisplayInRect:r];
-}
-
-// void WebWidgetHost::SetCursor(HCURSOR cursor) {
-// }
-
-void WebWidgetHost::DiscardBackingStore() {
- canvas_.reset();
-}
-
-WebWidgetHost::WebWidgetHost()
- : view_(NULL),
- webwidget_(NULL),
- scroll_dx_(0),
- scroll_dy_(0),
- weak_factory_(this) {
- set_painting(false);
-}
-
-WebWidgetHost::~WebWidgetHost() {
- // ui::SetWindowUserData(hwnd_, 0);
-
- webwidget_->close();
-}
-
-void WebWidgetHost::UpdatePaintRect(const gfx::Rect& rect) {
- paint_rect_.Union(rect);
-}
-
-void WebWidgetHost::Paint() {
- gfx::Rect client_rect(NSRectToCGRect([view_ frame]));
- NSGraphicsContext* view_context = [NSGraphicsContext currentContext];
- CGContextRef context = static_cast<CGContextRef>([view_context graphicsPort]);
-
- // Allocate a canvas if necessary
- if (!canvas_.get()) {
- ResetScrollRect();
- paint_rect_ = client_rect;
- canvas_.reset(skia::CreatePlatformCanvas(
- paint_rect_.width(), paint_rect_.height(), true));
- }
-
- // make sure webkit draws into our bitmap, not the window
- CGContextRef bitmap_context =
- skia::GetBitmapContext(skia::GetTopDevice(*canvas_));
- [NSGraphicsContext setCurrentContext:
- [NSGraphicsContext graphicsContextWithGraphicsPort:bitmap_context
- flipped:YES]];
-
- webwidget_->animate(0.0);
-
- // This may result in more invalidation
- webwidget_->layout();
-
- // Scroll the canvas if necessary
- scroll_rect_.Intersect(client_rect);
- if (!scroll_rect_.IsEmpty()) {
- // add to invalidate rect, since there's no equivalent of ScrollDC.
- paint_rect_.Union(scroll_rect_);
- }
- ResetScrollRect();
-
- // Paint the canvas if necessary. Allow painting to generate extra rects the
- // first time we call it. This is necessary because some WebCore rendering
- // objects update their layout only when painted.
- for (int i = 0; i < 2; ++i) {
- paint_rect_.Intersect(client_rect);
- if (!paint_rect_.IsEmpty()) {
- gfx::Rect rect(paint_rect_);
- paint_rect_ = gfx::Rect();
-
-// DLOG_IF(WARNING, i == 1) << "painting caused additional invalidations";
- PaintRect(rect);
- }
- }
- DCHECK(paint_rect_.IsEmpty());
-
- // set the context back to our window
- [NSGraphicsContext setCurrentContext: view_context];
-
- // Paint to the screen
- if ([view_ lockFocusIfCanDraw]) {
- int bitmap_height = CGBitmapContextGetHeight(bitmap_context);
- int bitmap_width = CGBitmapContextGetWidth(bitmap_context);
- CGRect bitmap_rect = { { 0, 0 },
- { bitmap_width, bitmap_height } };
- skia::DrawToNativeContext(canvas_.get(), context, 0,
- client_rect.height() - bitmap_height, &bitmap_rect);
-
- [view_ unlockFocus];
- }
-}
-
-WebScreenInfo WebWidgetHost::GetScreenInfo() {
- return WebScreenInfoFactory::screenInfo(view_);
-}
-
-void WebWidgetHost::Resize(const gfx::Rect& rect) {
- // Force an entire re-paint. TODO(darin): Maybe reuse this memory buffer.
- DiscardBackingStore();
- webwidget_->resize(WebSize(rect.width(), rect.height()));
-}
-
-void WebWidgetHost::MouseEvent(NSEvent *event) {
- const WebMouseEvent& web_event = WebInputEventFactory::mouseEvent(
- event, view_);
- webwidget_->handleInputEvent(web_event);
-}
-
-void WebWidgetHost::WheelEvent(NSEvent *event) {
- webwidget_->handleInputEvent(
- WebInputEventFactory::mouseWheelEvent(event, view_));
-}
-
-void WebWidgetHost::KeyEvent(NSEvent *event) {
- WebKeyboardEvent keyboard_event(WebInputEventFactory::keyboardEvent(event));
- webwidget_->handleInputEvent(keyboard_event);
- if ([event type] == NSKeyDown) {
- // Send a Char event here to emulate the keyboard events.
- // TODO(hbono): Bug 20852 <http://crbug.com/20852> implement the
- // NSTextInput protocol and remove this code.
- keyboard_event.type = WebInputEvent::Char;
- webwidget_->handleInputEvent(keyboard_event);
- }
-}
-
-void WebWidgetHost::SetFocus(bool enable) {
- // Ignore focus calls in layout test mode so that tests don't mess with each
- // other's focus when running in parallel.
- if (!TestShell::layout_test_mode())
- webwidget_->setFocus(enable);
-}
-
-void WebWidgetHost::ResetScrollRect() {
- scroll_rect_ = gfx::Rect();
- scroll_dx_ = 0;
- scroll_dy_ = 0;
-}
-
-void WebWidgetHost::PaintRect(const gfx::Rect& rect) {
-#ifndef NDEBUG
- DCHECK(!painting_);
-#endif
- DCHECK(canvas_.get());
-
- set_painting(true);
- webwidget_->paint(webkit_glue::ToWebCanvas(canvas_.get()), rect);
- set_painting(false);
-}

Powered by Google App Engine
This is Rietveld 408576698