color_chooser.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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#ifndef CONTENT_PUBLIC_BROWSER_COLOR_CHOOSER_H_
6#define CONTENT_PUBLIC_BROWSER_COLOR_CHOOSER_H_
7
8#include "third_party/skia/include/core/SkColor.h"
9
10namespace content {
11
12class WebContents;
13
14// Abstraction object for color choosers for each platform.
15class ColorChooser {
16 public:
17  static ColorChooser* Create(int identifier,
18                              WebContents* web_contents,
19                              SkColor initial_color);
20
21  explicit ColorChooser(int identifier) : identifier_(identifier) {}
22  virtual ~ColorChooser() {}
23
24  // Returns a unique identifier for this chooser.  Identifiers are unique
25  // across a renderer process.  This avoids race conditions in synchronizing
26  // the browser and renderer processes.  For example, if a renderer closes one
27  // chooser and opens another, and simultaneously the user picks a color in the
28  // first chooser, the IDs can be used to drop the "chose a color" message
29  // rather than erroneously tell the renderer that the user picked a color in
30  // the second chooser.
31  int identifier() const { return identifier_; }
32
33  // Ends connection with color chooser. Closes color chooser depending on the
34  // platform.
35  virtual void End() = 0;
36
37  // Sets the selected color.
38  virtual void SetSelectedColor(SkColor color) = 0;
39
40 private:
41  int identifier_;
42};
43
44}  // namespace content
45
46#endif  // CONTENT_PUBLIC_BROWSER_COLOR_CHOOSER_H_
47