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
10namespace 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.
17class 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_
47