Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Unified Diff: chrome/browser/tab_contents/render_view_context_menu.cc

Issue 8985008: Don't use browser windows for platform app shell windows (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Disable platform app tests on non-GTK platforms. Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/tab_contents/render_view_context_menu.h ('k') | chrome/browser/ui/browser.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/tab_contents/render_view_context_menu.cc
diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc
index 7ce4e98bf8f1c1782f5204d90b0bcddb1d0cadf8..6edf617cddca682c399928b605c964a9f50786bf 100644
--- a/chrome/browser/tab_contents/render_view_context_menu.cc
+++ b/chrome/browser/tab_contents/render_view_context_menu.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -24,6 +24,7 @@
#include "chrome/browser/download/download_service.h"
#include "chrome/browser/download/download_service_factory.h"
#include "chrome/browser/extensions/extension_event_router.h"
+#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/google/google_util.h"
#include "chrome/browser/net/browser_url_util.h"
@@ -48,13 +49,12 @@
#include "chrome/browser/translate/translate_tab_helper.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
-#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/search_engines/search_engine_tab_helper.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
-#include "chrome/browser/web_applications/web_app.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/extensions/extension.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/print_messages.h"
#include "chrome/common/spellcheck_messages.h"
@@ -498,7 +498,8 @@ void RenderViewContextMenu::AppendAllExtensionItems() {
std::vector<std::pair<std::string, std::string> > sorted_ids;
for (std::set<std::string>::iterator i = ids.begin(); i != ids.end(); ++i) {
const Extension* extension = service->GetExtensionById(*i, false);
- // Platform apps have their context menus created directly in InitMenu.
+ // Platform apps have their context menus created directly in
+ // AppendPlatformAppItems.
if (extension && !extension->is_platform_app())
sorted_ids.push_back(
std::pair<std::string, std::string>(extension->name(), *i));
@@ -522,23 +523,14 @@ void RenderViewContextMenu::AppendAllExtensionItems() {
}
void RenderViewContextMenu::InitMenu() {
+ if (GetPlatformApp()) {
+ AppendPlatformAppItems();
+ return;
+ }
+
bool has_link = !params_.unfiltered_link_url.is_empty();
bool has_selection = !params_.selection_text.empty();
- Browser* active_browser = BrowserList::FindBrowserWithWebContents(
- source_web_contents_);
- if (active_browser && active_browser->is_app()) {
- const std::string ext_id = web_app::GetExtensionIdFromApplicationName(
- active_browser->app_name());
- const Extension* app =
- profile_->GetExtensionService()->GetInstalledExtension(ext_id);
- if (app && app->is_platform_app()) {
- int index = 0;
- AppendExtensionItems(app->id(), &index);
- return;
- }
- }
-
if (AppendCustomItems()) {
// If there's a selection, don't early return when there are custom items,
// but fall through to adding the normal ones after the custom ones.
@@ -636,6 +628,35 @@ void RenderViewContextMenu::InitMenu() {
observers_.AddObserver(print_preview_menu_observer_.get());
}
+const Extension* RenderViewContextMenu::GetPlatformApp() const {
+ ExtensionProcessManager* process_manager =
+ profile_->GetExtensionProcessManager();
+ // There is no process manager in some tests.
+ if (!process_manager) {
+ return NULL;
+ }
+
+ ExtensionProcessManager::const_iterator iter;
+ for (iter = process_manager->begin(); iter != process_manager->end();
+ ++iter) {
+ ExtensionHost* host = *iter;
+ if (host->host_contents() == source_web_contents_) {
+ if (host->extension() && host->extension()->is_platform_app()) {
+ return host->extension();
+ }
+ }
+ }
+
+ return NULL;
+}
+
+void RenderViewContextMenu::AppendPlatformAppItems() {
+ const Extension* platform_app = GetPlatformApp();
+ DCHECK(platform_app);
+ int index = 0;
+ AppendExtensionItems(platform_app->id(), &index);
+}
+
void RenderViewContextMenu::LookUpInDictionary() {
// Used only in the Mac port.
NOTREACHED();
« no previous file with comments | « chrome/browser/tab_contents/render_view_context_menu.h ('k') | chrome/browser/ui/browser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698