blob: 3faf675dbdf5705d4a69b48ed300146bd5ef9c08 [file] [log] [blame]
[email protected]1ab4ddf2011-07-21 04:48:041// Copyright (c) 2011 The Chromium Authors. All rights reserved.
license.botbf09a502008-08-24 00:55:552// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
initial.commit09911bf2008-07-26 23:55:294
[email protected]f3ec7742009-01-15 00:59:165#include "chrome/browser/tab_contents/tab_util.h"
initial.commit09911bf2008-07-26 23:55:296
[email protected]1ab4ddf2011-07-21 04:48:047#include "chrome/browser/extensions/extension_service.h"
8#include "chrome/browser/profiles/profile.h"
9#include "chrome/browser/ui/webui/chrome_web_ui_factory.h"
10#include "chrome/common/chrome_switches.h"
[email protected]5de634712011-03-02 00:20:1911#include "content/browser/renderer_host/render_view_host.h"
[email protected]1ab4ddf2011-07-21 04:48:0412#include "content/browser/site_instance.h"
[email protected]5de634712011-03-02 00:20:1913#include "content/browser/tab_contents/tab_contents.h"
[email protected]1ab4ddf2011-07-21 04:48:0414#include "googleurl/src/gurl.h"
initial.commit09911bf2008-07-26 23:55:2915
[email protected]1ab4ddf2011-07-21 04:48:0416namespace tab_util {
17
18TabContents* GetTabContentsByID(int render_process_id, int render_view_id) {
initial.commit09911bf2008-07-26 23:55:2919 RenderViewHost* render_view_host =
20 RenderViewHost::FromID(render_process_id, render_view_id);
21 if (!render_view_host)
22 return NULL;
23
[email protected]57c6a652009-05-04 07:58:3424 return render_view_host->delegate()->GetAsTabContents();
initial.commit09911bf2008-07-26 23:55:2925}
[email protected]1ab4ddf2011-07-21 04:48:0426
[email protected]a81343d232011-12-27 07:39:2027content::WebContents* GetWebContentsByID(int render_process_id,
28 int render_view_id) {
29 RenderViewHost* render_view_host =
30 RenderViewHost::FromID(render_process_id, render_view_id);
31 if (!render_view_host)
32 return NULL;
33
34 return render_view_host->delegate()->GetAsWebContents();
35}
36
[email protected]1ab4ddf2011-07-21 04:48:0437SiteInstance* GetSiteInstanceForNewTab(TabContents* source_contents,
38 Profile* profile,
39 const GURL& url) {
40 // If url is a WebUI or extension, we need to be sure to use the right type
41 // of renderer process up front. Otherwise, we create a normal SiteInstance
42 // as part of creating the tab.
43 ExtensionService* service = profile->GetExtensionService();
44 if (ChromeWebUIFactory::GetInstance()->UseWebUIForURL(profile, url) ||
[email protected]615d88f2011-12-13 01:47:4445 (service &&
46 service->extensions()->GetHostedAppByURL(ExtensionURLInfo(url)))) {
[email protected]1ab4ddf2011-07-21 04:48:0447 return SiteInstance::CreateSiteInstanceForURL(profile, url);
48 }
49
50 if (!source_contents)
51 return NULL;
52
53 // Don't use this logic when "--process-per-tab" is specified.
54 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kProcessPerTab) &&
[email protected]627e0512011-12-21 22:55:3055 SiteInstance::IsSameWebSite(source_contents->GetBrowserContext(),
[email protected]1ab4ddf2011-07-21 04:48:0456 source_contents->GetURL(),
57 url)) {
58 return source_contents->GetSiteInstance();
59 }
60 return NULL;
61}
62
63} // namespace tab_util