158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/chromeos/first_run/first_run_view.h" 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/first_run/first_run_ui.h" 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/common/url_constants.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/render_view_host.h" 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/render_widget_host_view.h" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/web_contents.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "third_party/WebKit/public/web/WebInputEvent.h" 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h" 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/views/controls/webview/webview.h" 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "url/gurl.h" 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace chromeos { 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)FirstRunView::FirstRunView() 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) : web_view_(NULL) { 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void FirstRunView::Init(content::BrowserContext* context) { 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_view_ = new views::WebView(context); 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) AddChildView(web_view_); 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_view_->LoadInitialURL(GURL(chrome::kChromeUIFirstRunURL)); 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::WebContents* web_contents = web_view_->web_contents(); 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_contents->SetDelegate(this); 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) web_contents); 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) web_contents->GetRenderViewHost()->GetView()->SetBackgroundOpaque(false); 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)FirstRunActor* FirstRunView::GetActor() { 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return static_cast<FirstRunUI*>( 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_view_->web_contents()->GetWebUI()->GetController())->get_actor(); 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void FirstRunView::Layout() { 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_view_->SetBoundsRect(bounds()); 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void FirstRunView::RequestFocus() { 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_view_->RequestFocus(); 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)content::WebContents* FirstRunView::GetWebContents() { 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return web_view_->web_contents(); 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)bool FirstRunView::HandleContextMenu( 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const content::ContextMenuParams& params) { 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Discards context menu. 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return true; 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool FirstRunView::PreHandleGestureEvent( 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::WebContents* source, 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebGestureEvent& event) { 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Disable pinch zooming. 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return event.type == blink::WebGestureEvent::GesturePinchBegin || 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) event.type == blink::WebGestureEvent::GesturePinchUpdate || 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) event.type == blink::WebGestureEvent::GesturePinchEnd; 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace chromeos 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 71