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

Side by Side Diff: chrome/browser/ui/views/color_chooser_win.cc

Issue 10442020: Initial implementation of ColorChooser for Aura. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 <windows.h> 5 #include <windows.h>
6 6
7 #include "chrome/browser/platform_util.h" 7 #include "chrome/browser/platform_util.h"
8 #include "chrome/browser/ui/views/color_chooser_dialog.h" 8 #include "chrome/browser/ui/views/color_chooser_dialog.h"
9 #include "content/public/browser/color_chooser.h" 9 #include "content/public/browser/color_chooser.h"
10 #include "content/public/browser/render_view_host.h" 10 #include "content/public/browser/render_view_host.h"
11 #include "content/public/browser/render_widget_host_view.h" 11 #include "content/public/browser/render_widget_host_view.h"
12 #include "content/public/browser/web_contents.h" 12 #include "content/public/browser/web_contents.h"
13 #include "content/public/browser/web_contents_observer.h" 13 #include "content/public/browser/web_contents_observer.h"
14 #include "ui/views/color_chooser/color_chooser_listener.h"
14 15
15 class ColorChooserWin : public content::ColorChooser, 16 class ColorChooserWin : public content::ColorChooser,
16 public ColorChooserDialog::Listener, 17 public views::ColorChooserListener {
17 public content::WebContentsObserver {
18 public: 18 public:
19 ColorChooserWin(int identifier, 19 ColorChooserWin(int identifier,
20 content::WebContents* tab, 20 content::WebContents* tab,
21 SkColor initial_color); 21 SkColor initial_color);
22 ~ColorChooserWin(); 22 ~ColorChooserWin();
23 23
24 // content::ColorChooser: 24 // content::ColorChooser overrides:
25 virtual void End() OVERRIDE {} 25 virtual void End() OVERRIDE {}
26 virtual void SetSelectedColor(SkColor color) OVERRIDE {} 26 virtual void SetSelectedColor(SkColor color) OVERRIDE {}
27 27
28 // ColorChooserDialog::Listener: 28 // views::ColorChooserListener overrides:
29 virtual void DidChooseColor(SkColor color); 29 virtual void OnColorChosen(SkColor color);
30 virtual void DidEnd(); 30 virtual void OnColorChooserDialogClosed();
31 31
32 private: 32 private:
33 // The web contents invoking the color chooser. No ownership. because it will
34 // outlive this class.
35 content::WebContents* tab_;
36
37 // The color chooser dialog which maintains the native color chooser UI.
33 scoped_refptr<ColorChooserDialog> color_chooser_dialog_; 38 scoped_refptr<ColorChooserDialog> color_chooser_dialog_;
34 }; 39 };
35 40
36 content::ColorChooser* content::ColorChooser::Create(int identifier, 41 content::ColorChooser* content::ColorChooser::Create(int identifier,
37 content::WebContents* tab, 42 content::WebContents* tab,
38 SkColor initial_color) { 43 SkColor initial_color) {
39 return new ColorChooserWin(identifier, tab, initial_color); 44 return new ColorChooserWin(identifier, tab, initial_color);
40 } 45 }
41 46
42 ColorChooserWin::ColorChooserWin(int identifier, 47 ColorChooserWin::ColorChooserWin(int identifier,
43 content::WebContents* tab, 48 content::WebContents* tab,
44 SkColor initial_color) 49 SkColor initial_color)
45 : content::ColorChooser(identifier), 50 : content::ColorChooser(identifier),
46 content::WebContentsObserver(tab) { 51 tab_(tab) {
47 gfx::NativeWindow owning_window = platform_util::GetTopLevel( 52 gfx::NativeWindow owning_window = platform_util::GetTopLevel(
48 web_contents()->GetRenderViewHost()->GetView()->GetNativeView()); 53 tab_->GetRenderViewHost()->GetView()->GetNativeView());
49 color_chooser_dialog_ = new ColorChooserDialog(this, 54 color_chooser_dialog_ = new ColorChooserDialog(this,
50 initial_color, 55 initial_color,
51 owning_window); 56 owning_window);
52 } 57 }
53 58
54 ColorChooserWin::~ColorChooserWin() { 59 ColorChooserWin::~ColorChooserWin() {
55 // Always call End() before destroying. 60 // Always call End() before destroying.
56 DCHECK(!color_chooser_dialog_); 61 DCHECK(!color_chooser_dialog_);
57 } 62 }
58 63
59 void ColorChooserWin::DidChooseColor(SkColor color) { 64 void ColorChooserWin::OnColorChosen(SkColor color) {
60 if (web_contents()) 65 if (tab_)
61 web_contents()->DidChooseColorInColorChooser(identifier(), color); 66 tab_->DidChooseColorInColorChooser(identifier(), color);
62 } 67 }
63 68
64 void ColorChooserWin::DidEnd() { 69 void ColorChooserWin::OnColorChooserDialogClosed() {
65 if (color_chooser_dialog_.get()) { 70 if (color_chooser_dialog_.get()) {
66 color_chooser_dialog_->ListenerDestroyed(); 71 color_chooser_dialog_->ListenerDestroyed();
67 color_chooser_dialog_ = NULL; 72 color_chooser_dialog_ = NULL;
68 } 73 }
69 if (web_contents()) 74 if (tab_)
70 web_contents()->DidEndColorChooser(identifier()); 75 tab_->DidEndColorChooser(identifier());
71 } 76 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/color_chooser_dialog.cc ('k') | ui/views/color_chooser/color_chooser_listener.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698