15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_RENDERER_RENDERER_WEBCOLORCHOOSER_IMPL_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_RENDERER_RENDERER_WEBCOLORCHOOSER_IMPL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <vector>
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "content/public/common/color_suggestion.h"
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "content/public/renderer/render_frame_observer.h"
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebColorChooser.h"
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebColorChooserClient.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/core/SkColor.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebFrame;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class RendererWebColorChooserImpl : public blink::WebColorChooser,
24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                    public RenderFrameObserver {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  explicit RendererWebColorChooserImpl(RenderFrame* render_frame,
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                       blink::WebColorChooserClient*);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~RendererWebColorChooserImpl();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // blink::WebColorChooser implementation:
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void setSelectedColor(const blink::WebColor);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void endChooser();
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void Open(SkColor initial_color,
35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            const std::vector<content::ColorSuggestion>& suggestions);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  blink::WebColorChooserClient* client() { return client_; }
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private:
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // RenderFrameObserver implementation:
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // Don't destroy the RendererWebColorChooserImpl when the RenderFrame goes
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // away. RendererWebColorChooserImpl is owned by
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // blink::ColorChooserUIController.
44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void OnDestruct() OVERRIDE {}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDidChooseColorResponse(int color_chooser_id, SkColor color);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDidEndColorChooser(int color_chooser_id);
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int identifier_;
51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  blink::WebColorChooserClient* client_;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(RendererWebColorChooserImpl);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_RENDERER_RENDERER_WEBCOLORCHOOSER_IMPL_H_
59