color_chooser.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
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 RenderViewHost; 13class WebContents; 14 15// Abstraction object for color choosers for each platform. 16class ColorChooser { 17 public: 18 static ColorChooser* Create(int identifier, 19 WebContents* web_contents, 20 SkColor initial_color); 21 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 40private: 41 int identifier_; 42}; 43 44} 45 46#endif // CONTENT_PUBLIC_BROWSER_COLOR_CHOOSER_H_ 47