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