summaryrefslogtreecommitdiffstats
path: root/chrome/browser/platform_util_mac.mm
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/platform_util_mac.mm')
-rw-r--r--chrome/browser/platform_util_mac.mm89
1 files changed, 89 insertions, 0 deletions
diff --git a/chrome/browser/platform_util_mac.mm b/chrome/browser/platform_util_mac.mm
new file mode 100644
index 0000000..43d9582
--- /dev/null
+++ b/chrome/browser/platform_util_mac.mm
@@ -0,0 +1,89 @@
+// Copyright (c) 2010 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.
+
+#include "chrome/browser/platform_util.h"
+
+#import <Cocoa/Cocoa.h>
+
+#include "app/l10n_util.h"
+#include "app/l10n_util_mac.h"
+#include "base/file_path.h"
+#include "base/logging.h"
+#include "base/mac_util.h"
+#include "base/sys_string_conversions.h"
+#include "googleurl/src/gurl.h"
+#include "grit/generated_resources.h"
+
+namespace platform_util {
+
+void ShowItemInFolder(const FilePath& full_path) {
+ DCHECK_EQ([NSThread currentThread], [NSThread mainThread]);
+ NSString* path_string = base::SysUTF8ToNSString(full_path.value());
+ if (!path_string || ![[NSWorkspace sharedWorkspace] selectFile:path_string
+ inFileViewerRootedAtPath:nil])
+ LOG(WARNING) << "NSWorkspace failed to select file " << full_path.value();
+}
+
+void OpenItem(const FilePath& full_path) {
+ DCHECK_EQ([NSThread currentThread], [NSThread mainThread]);
+ NSString* path_string = base::SysUTF8ToNSString(full_path.value());
+ if (!path_string || ![[NSWorkspace sharedWorkspace] openFile:path_string])
+ LOG(WARNING) << "NSWorkspace failed to open file " << full_path.value();
+}
+
+void OpenExternal(const GURL& url) {
+ DCHECK_EQ([NSThread currentThread], [NSThread mainThread]);
+ NSString* url_string = base::SysUTF8ToNSString(url.spec());
+ NSURL* ns_url = [NSURL URLWithString:url_string];
+ if (!ns_url || ![[NSWorkspace sharedWorkspace] openURL:ns_url])
+ LOG(WARNING) << "NSWorkspace failed to open URL " << url;
+}
+
+gfx::NativeWindow GetTopLevel(gfx::NativeView view) {
+ return [view window];
+}
+
+bool IsWindowActive(gfx::NativeWindow window) {
+ return [window isKeyWindow] || [window isMainWindow];
+}
+
+bool IsVisible(gfx::NativeView view) {
+ // A reasonable approximation of how you'd expect this to behave.
+ return (view &&
+ ![view isHiddenOrHasHiddenAncestor] &&
+ [view window] &&
+ [[view window] isVisible]);
+}
+
+void SimpleErrorBox(gfx::NativeWindow parent,
+ const string16& title,
+ const string16& message) {
+ NSAlert* alert = [[[NSAlert alloc] init] autorelease];
+ [alert addButtonWithTitle:l10n_util::GetNSString(IDS_OK)];
+ [alert setMessageText:base::SysUTF16ToNSString(title)];
+ [alert setInformativeText:base::SysUTF16ToNSString(message)];
+ [alert setAlertStyle:NSWarningAlertStyle];
+ [alert runModal];
+}
+
+string16 GetVersionStringModifier() {
+#if defined(GOOGLE_CHROME_BUILD)
+ NSBundle* bundle = mac_util::MainAppBundle();
+ NSString* channel = [bundle objectForInfoDictionaryKey:@"KSChannelID"];
+ // Only ever return "", "unknown", "beta" or "dev" in a branded build.
+ if ([channel isEqual:@"stable"]) {
+ channel = @"";
+ } else if ([channel isEqual:@"beta"] || [channel isEqual:@"dev"]) {
+ // do nothing.
+ } else {
+ channel = @"unknown";
+ }
+
+ return base::SysNSStringToUTF16(channel);
+#else
+ return string16();
+#endif
+}
+
+} // namespace platform_util