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 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/views/color_chooser_aura.h" 6 7#include "chrome/browser/ui/browser_dialogs.h" 8#include "chrome/browser/ui/browser_finder.h" 9#include "chrome/browser/ui/browser_window.h" 10#include "content/public/browser/web_contents.h" 11#include "ui/views/color_chooser/color_chooser_view.h" 12#include "ui/views/widget/widget.h" 13 14ColorChooserAura::ColorChooserAura(content::WebContents* web_contents, 15 SkColor initial_color) 16 : web_contents_(web_contents) { 17 view_ = new views::ColorChooserView(this, initial_color); 18 widget_ = views::Widget::CreateWindowWithParent( 19 view_, web_contents->GetTopLevelNativeWindow()); 20 widget_->Show(); 21} 22 23void ColorChooserAura::OnColorChosen(SkColor color) { 24 if (web_contents_) 25 web_contents_->DidChooseColorInColorChooser(color); 26} 27 28void ColorChooserAura::OnColorChooserDialogClosed() { 29 view_ = NULL; 30 widget_ = NULL; 31 DidEndColorChooser(); 32} 33 34void ColorChooserAura::End() { 35 if (widget_) { 36 view_->set_listener(NULL); 37 widget_->Close(); 38 view_ = NULL; 39 widget_ = NULL; 40 // DidEndColorChooser will invoke Browser::DidEndColorChooser, which deletes 41 // this. Take care of the call order. 42 DidEndColorChooser(); 43 } 44} 45 46void ColorChooserAura::DidEndColorChooser() { 47 if (web_contents_) 48 web_contents_->DidEndColorChooser(); 49} 50 51void ColorChooserAura::SetSelectedColor(SkColor color) { 52 if (view_) 53 view_->OnColorChanged(color); 54} 55 56// static 57ColorChooserAura* ColorChooserAura::Open( 58 content::WebContents* web_contents, SkColor initial_color) { 59 return new ColorChooserAura(web_contents, initial_color); 60} 61 62#if !defined(OS_WIN) 63namespace chrome { 64 65content::ColorChooser* ShowColorChooser(content::WebContents* web_contents, 66 SkColor initial_color) { 67 return ColorChooserAura::Open(web_contents, initial_color); 68} 69 70} // namespace chrome 71#endif // OS_WIN 72