1// Copyright 2014 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#include "chrome/browser/guest_view/web_view/context_menu_content_type_web_view.h"
6
7#include "base/command_line.h"
8#include "chrome/common/chrome_switches.h"
9#include "extensions/common/extension.h"
10#include "extensions/common/manifest.h"
11
12ContextMenuContentTypeWebView::ContextMenuContentTypeWebView(
13    content::WebContents* web_contents,
14    const content::ContextMenuParams& params)
15    : ContextMenuContentType(web_contents, params, true) {
16}
17
18ContextMenuContentTypeWebView::~ContextMenuContentTypeWebView() {
19}
20
21bool ContextMenuContentTypeWebView::SupportsGroup(int group) {
22  switch (group) {
23    case ITEM_GROUP_PAGE:
24    case ITEM_GROUP_FRAME:
25    case ITEM_GROUP_LINK:
26    case ITEM_GROUP_SEARCHWEBFORIMAGE:
27    case ITEM_GROUP_SEARCH_PROVIDER:
28    case ITEM_GROUP_PRINT:
29    case ITEM_GROUP_ALL_EXTENSION:
30    case ITEM_GROUP_PRINT_PREVIEW:
31      return false;
32    case ITEM_GROUP_CURRENT_EXTENSION:
33      // Show contextMenus API items.
34      return true;
35    case ITEM_GROUP_DEVELOPER:
36      // TODO(lazyboy): Enable this for mac too when http://crbug.com/380405 is
37      // fixed.
38#if !defined(OS_MACOSX)
39      {
40        // Add dev tools for unpacked extensions.
41        const extensions::Extension* embedder_platform_app = GetExtension();
42        return !embedder_platform_app ||
43            extensions::Manifest::IsUnpackedLocation(
44                embedder_platform_app->location()) ||
45            CommandLine::ForCurrentProcess()->HasSwitch(
46                switches::kDebugPackedApps);
47      }
48#else
49      return ContextMenuContentType::SupportsGroup(group);
50#endif
51    default:
52      return ContextMenuContentType::SupportsGroup(group);
53  }
54}
55