Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / components / plugins / renderer / mobile_youtube_plugin.h
1 // Copyright 2013 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 COMPONENTS_PLUGINS_RENDERER_MOBILE_YOUTUBE_PLUGIN_H_
6 #define COMPONENTS_PLUGINS_RENDERER_MOBILE_YOUTUBE_PLUGIN_H_
7
8 #include "components/plugins/renderer/plugin_placeholder.h"
9
10 namespace plugins {
11
12 // Class representing placeholders for old style embedded youtube video on
13 // mobile device. For old style embedded youtube video, it has a url in the form
14 // of http://www.youtube.com/v/VIDEO_ID. This placeholder replaces the url with
15 // a simple html page and clicking the play image redirects the user to the
16 // mobile youtube app.
17 class MobileYouTubePlugin : public PluginPlaceholder {
18  public:
19   MobileYouTubePlugin(content::RenderFrame* render_frame,
20                       blink::WebLocalFrame* frame,
21                       const blink::WebPluginParams& params,
22                       base::StringPiece& template_html,
23                       GURL placeholderDataUrl);
24
25   // Whether this is a youtube url.
26   static bool IsYouTubeURL(const GURL& url, const std::string& mime_type);
27
28  private:
29   virtual ~MobileYouTubePlugin();
30
31   // Opens a youtube app in the current tab.
32   void OpenYoutubeUrlCallback();
33
34   // WebViewPlugin::Delegate (via PluginPlaceholder) method
35   virtual void BindWebFrame(blink::WebFrame* frame) OVERRIDE;
36
37   // gin::Wrappable (via PluginPlaceholder) method
38   virtual gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
39       v8::Isolate* isolate) OVERRIDE;
40
41   DISALLOW_COPY_AND_ASSIGN(MobileYouTubePlugin);
42 };
43
44 }  // namespace plugins
45
46 #endif  // COMPONENTS_PLUGINS_RENDERER_MOBILE_YOUTUBE_PLUGIN_H_