OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/string_util.h" | 5 #include "base/string_util.h" |
6 #include "chrome/browser/browser_about_handler.h" | 6 #include "chrome/browser/browser_about_handler.h" |
7 #include "chrome/browser/browser_url_handler.h" | 7 #include "chrome/browser/browser_url_handler.h" |
8 #include "chrome/browser/dom_ui/dom_ui_contents.h" | 8 #include "chrome/browser/dom_ui/dom_ui_contents.h" |
9 #include "chrome/browser/dom_ui/new_tab_ui.h" | 9 #include "chrome/browser/dom_ui/new_tab_ui.h" |
10 #include "chrome/browser/profile.h" | 10 #include "chrome/browser/profile.h" |
(...skipping 29 matching lines...) Expand all Loading... |
40 // static | 40 // static |
41 TabContents* TabContents::CreateWithType(TabContentsType type, | 41 TabContents* TabContents::CreateWithType(TabContentsType type, |
42 Profile* profile, | 42 Profile* profile, |
43 SiteInstance* instance) { | 43 SiteInstance* instance) { |
44 TabContents* contents = NULL; | 44 TabContents* contents = NULL; |
45 | 45 |
46 switch (type) { | 46 switch (type) { |
47 case TAB_CONTENTS_WEB: | 47 case TAB_CONTENTS_WEB: |
48 contents = new WebContents(profile, instance, NULL, MSG_ROUTING_NONE, NULL
); | 48 contents = new WebContents(profile, instance, NULL, MSG_ROUTING_NONE, NULL
); |
49 break; | 49 break; |
50 case TAB_CONTENTS_ABOUT_UI: | |
51 contents = new BrowserAboutHandler(profile, instance, NULL); | |
52 break; | |
53 // TODO(port): remove this platform define, either by porting the tab contents | 50 // TODO(port): remove this platform define, either by porting the tab contents |
54 // types or removing them completely. | 51 // types or removing them completely. |
55 #if defined(OS_WIN) | 52 #if defined(OS_WIN) |
56 case TAB_CONTENTS_HTML_DIALOG: | 53 case TAB_CONTENTS_HTML_DIALOG: |
57 contents = new HtmlDialogContents(profile, instance, NULL); | 54 contents = new HtmlDialogContents(profile, instance, NULL); |
58 break; | 55 break; |
59 #endif // defined(OS_WIN) | 56 #endif // defined(OS_WIN) |
60 case TAB_CONTENTS_DEBUGGER: | 57 case TAB_CONTENTS_DEBUGGER: |
61 case TAB_CONTENTS_NEW_TAB_UI: | 58 case TAB_CONTENTS_NEW_TAB_UI: |
62 case TAB_CONTENTS_DOM_UI: | 59 case TAB_CONTENTS_DOM_UI: |
(...skipping 12 matching lines...) Expand all Loading... |
75 } | 72 } |
76 | 73 |
77 if (contents) | 74 if (contents) |
78 contents->CreateView(); | 75 contents->CreateView(); |
79 | 76 |
80 return contents; | 77 return contents; |
81 } | 78 } |
82 | 79 |
83 // static | 80 // static |
84 TabContentsType TabContents::TypeForURL(GURL* url) { | 81 TabContentsType TabContents::TypeForURL(GURL* url) { |
| 82 // The BrowserURLHandler::HandleBrowserURL call should just be inside the |
| 83 // NavigationController once this class is deleted. |
85 DCHECK(url); | 84 DCHECK(url); |
86 if (g_extra_types) { | 85 if (g_extra_types) { |
87 TabContentsFactoryMap::const_iterator it = g_extra_types->begin(); | 86 TabContentsFactoryMap::const_iterator it = g_extra_types->begin(); |
88 for (; it != g_extra_types->end(); ++it) { | 87 for (; it != g_extra_types->end(); ++it) { |
89 if (it->second->CanHandleURL(*url)) | 88 if (it->second->CanHandleURL(*url)) |
90 return it->first; | 89 return it->first; |
91 } | 90 } |
92 } | 91 } |
93 | 92 |
94 // TODO(port): port the rest of this function. | 93 // TODO(port): port the rest of this function. |
95 #if defined(OS_WIN) | 94 #if defined(OS_WIN) |
96 // Try to handle as a browser URL. If successful, |url| will end up | 95 // Try to handle as a browser URL. If successful, |url| will end up |
97 // containing the real url being loaded (browser url's are just an alias). | 96 // containing the real url being loaded (browser url's are just an alias). |
98 TabContentsType type(TAB_CONTENTS_UNKNOWN_TYPE); | 97 TabContentsType type(TAB_CONTENTS_UNKNOWN_TYPE); |
99 if (BrowserURLHandler::HandleBrowserURL(url, &type)) | 98 if (BrowserURLHandler::HandleBrowserURL(url, &type)) |
100 return type; | 99 return type; |
101 | 100 |
102 if (HtmlDialogContents::IsHtmlDialogUrl(*url)) | 101 if (HtmlDialogContents::IsHtmlDialogUrl(*url)) |
103 return TAB_CONTENTS_HTML_DIALOG; | 102 return TAB_CONTENTS_HTML_DIALOG; |
104 | 103 |
105 if (DebuggerContents::IsDebuggerUrl(*url)) | 104 if (DebuggerContents::IsDebuggerUrl(*url)) |
106 return TAB_CONTENTS_DEBUGGER; | 105 return TAB_CONTENTS_DEBUGGER; |
107 | 106 |
108 if (url->SchemeIs(DOMUIContents::GetScheme().c_str())) | 107 if (url->SchemeIs(DOMUIContents::GetScheme().c_str())) |
109 return TAB_CONTENTS_DOM_UI; | 108 return TAB_CONTENTS_DOM_UI; |
110 #elif defined(OS_POSIX) | 109 #elif defined(OS_POSIX) |
111 TabContentsType type(TAB_CONTENTS_UNKNOWN_TYPE); | 110 TabContentsType type(TAB_CONTENTS_UNKNOWN_TYPE); |
112 if (BrowserURLHandler::HandleBrowserURL(url, &type) && | 111 if (BrowserURLHandler::HandleBrowserURL(url, &type)) { |
113 type == TAB_CONTENTS_ABOUT_UI) { | |
114 return type; | 112 return type; |
115 } | 113 } |
116 if (url->SchemeIs(DOMUIContents::GetScheme().c_str())) | 114 if (url->SchemeIs(DOMUIContents::GetScheme().c_str())) |
117 return TAB_CONTENTS_DOM_UI; | 115 return TAB_CONTENTS_DOM_UI; |
118 NOTIMPLEMENTED(); | 116 NOTIMPLEMENTED(); |
119 #endif | 117 #endif |
120 | 118 |
121 // NOTE: Even the empty string can be loaded by a WebContents. | 119 // NOTE: Even the empty string can be loaded by a WebContents. |
122 return TAB_CONTENTS_WEB; | 120 return TAB_CONTENTS_WEB; |
123 } | 121 } |
(...skipping 15 matching lines...) Expand all Loading... |
139 g_extra_types->erase(type); | 137 g_extra_types->erase(type); |
140 if (g_extra_types->empty()) { | 138 if (g_extra_types->empty()) { |
141 delete g_extra_types; | 139 delete g_extra_types; |
142 g_extra_types = NULL; | 140 g_extra_types = NULL; |
143 } | 141 } |
144 } | 142 } |
145 | 143 |
146 return prev_factory; | 144 return prev_factory; |
147 } | 145 } |
148 | 146 |
OLD | NEW |