Chromium Code Reviews| Index: chrome/browser/ui/extensions/shell_window.cc |
| diff --git a/chrome/browser/ui/extensions/shell_window.cc b/chrome/browser/ui/extensions/shell_window.cc |
| index 9f8a75a59f77baca23cb782d2ca81ec4b85e251b..91fb6655a97a0b296364d26d178102daf91e13f0 100644 |
| --- a/chrome/browser/ui/extensions/shell_window.cc |
| +++ b/chrome/browser/ui/extensions/shell_window.cc |
| @@ -4,6 +4,20 @@ |
| #include "chrome/browser/ui/extensions/shell_window.h" |
| +#if defined(OS_WIN) |
| +#include <windows.h> |
| +#include <shellapi.h> |
| +#endif // OS_WIN |
| + |
| +#if defined(OS_POSIX) |
| +#include "chrome/browser/shell_integration_linux.h" |
| +#endif // OS_POSIX |
| + |
| +#if defined(OS_MACOSX) |
| +#include <CoreFoundation/CFBundle.h> |
| +#include <ApplicationServices/ApplicationServices.h> |
| +#endif // OS_MACOSX |
|
Marijn Kruisselbrink
2012/09/04 15:40:53
I think the chromium coding style says platform-sp
|
| + |
| #include "base/utf_string_conversions.h" |
| #include "chrome/browser/extensions/extension_process_manager.h" |
| #include "chrome/browser/extensions/extension_system.h" |
| @@ -201,6 +215,22 @@ void ShellWindow::RequestMediaAccessPermission( |
| WebContents* ShellWindow::OpenURLFromTab(WebContents* source, |
| const content::OpenURLParams& params) { |
| +#if defined(OS_WIN) |
| + ShellExecuteA(NULL, "open", params.url.spec().c_str(), |
| + NULL, NULL, SW_SHOWNORMAL); |
| +#elif defined(OS_POSIX) |
| + ShellIntegrationLinux::LaunchDefaultBrowser(params.url); |
| +#elif defined(OS_MACOSX) |
| + CFURLRef url = CFURLCreateWithBytes( |
| + NULL, |
| + (UInt8*)params.url.spec().c_str(), |
| + params.url.spec().length(), |
| + kCFStringEncodingASCII, |
| + NULL |
| + ); |
| + LSOpenCFURLRef(url,0); |
| + CFRelease(url); |
|
jeremya
2012/09/03 02:42:29
It's kind of icky to have all these #ifdefs here.
|
| +#else |
| DCHECK(source == web_contents_); |
| if (params.url.host() == extension_->id()) { |
| @@ -242,6 +272,9 @@ WebContents* ShellWindow::OpenURLFromTab(WebContents* source, |
| WebContents* new_tab = browser->OpenURL(new_tab_params); |
| browser->window()->Show(); |
| return new_tab; |
| +#endif |
| + source->SetDelegate(NULL); |
|
jeremya
2012/09/03 02:42:29
Rather than setting the delegate to the ShellWindo
|
| + return NULL; |
| } |
| void ShellWindow::AddNewContents(WebContents* source, |
| @@ -252,6 +285,10 @@ void ShellWindow::AddNewContents(WebContents* source, |
| DCHECK(source == web_contents_); |
| DCHECK(Profile::FromBrowserContext(new_contents->GetBrowserContext()) == |
| profile_); |
| + |
| +#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_POSIX) |
| + new_contents->SetDelegate(this); |
| +#else |
| Browser* browser = browser::FindOrCreateTabbedBrowser(profile_); |
| // Force all links to open in a new tab, even if they were trying to open a |
| // new window. |
| @@ -259,6 +296,7 @@ void ShellWindow::AddNewContents(WebContents* source, |
| disposition == NEW_BACKGROUND_TAB ? disposition : NEW_FOREGROUND_TAB; |
| chrome::AddWebContents(browser, NULL, new_contents, disposition, initial_pos, |
| user_gesture); |
| +#endif |
| } |
| void ShellWindow::HandleKeyboardEvent( |