summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authordimich@chromium.org <dimich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-27 01:54:28 +0000
committerdimich@chromium.org <dimich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-27 01:54:28 +0000
commit1c704b71a123770b6091a01d9a54ac57a99ae290 (patch)
tree05c4bf67cbd39da2d2cb7891596a64cb6b5e7b9f /base
parent3dc423f963527b2788226359b34ab367f0788e44 (diff)
downloadchromium_src-1c704b71a123770b6091a01d9a54ac57a99ae290.zip
chromium_src-1c704b71a123770b6091a01d9a54ac57a99ae290.tar.gz
chromium_src-1c704b71a123770b6091a01d9a54ac57a99ae290.tar.bz2
Revert 57614 - Re-land. Fixed previous build error.
It looks like it broke browser_tests. Will revert and investigate. Implement OSX version for "Start on Login" for background-enabled extensions. Review URL: http://codereview.chromium.org/3163029 TBR=dimich@chromium.org Review URL: http://codereview.chromium.org/3226002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57625 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/mac_util.h20
-rw-r--r--base/mac_util.mm149
2 files changed, 0 insertions, 169 deletions
diff --git a/base/mac_util.h b/base/mac_util.h
index 4b8d636..d50e9e3 100644
--- a/base/mac_util.h
+++ b/base/mac_util.h
@@ -149,26 +149,6 @@ void SetProcessName(CFStringRef process_name);
// releasing the return value.
CGImageRef CopyNSImageToCGImage(NSImage* image);
-// Checks if the current application is set as a Login Item, so it will launch
-// on Login. If a non-NULL pointer to is_hidden is passed, the Login Item also
-// is queried for the 'hide on launch' flag.
-bool CheckLoginItemStatus(bool* is_hidden);
-
-// Adds current application to the set of Login Items with specified "hide"
-// flag. This has the same effect as adding/removing the application in
-// SystemPreferences->Accounts->LoginItems or marking Application in the Dock
-// as "Options->Open on Login".
-// Does nothing if the application is already set up as Login Item with
-// specified hide flag.
-void AddToLoginItems(bool hide_on_startup);
-
-// Removes the current application from the list Of Login Items.
-void RemoveFromLoginItems();
-
-// Returns true if the current process was automatically launched as a
-// 'Login Item' with 'hide on startup' flag. Used to suppress opening windows.
-bool WasLaunchedAsHiddenLoginItem();
-
} // namespace mac_util
#endif // BASE_MAC_UTIL_H_
diff --git a/base/mac_util.mm b/base/mac_util.mm
index fa25501..8b0d481 100644
--- a/base/mac_util.mm
+++ b/base/mac_util.mm
@@ -10,7 +10,6 @@
#include "base/logging.h"
#include "base/message_loop.h"
#include "base/scoped_cftyperef.h"
-#include "base/scoped_nsobject.h"
#include "base/sys_string_conversions.h"
namespace {
@@ -50,78 +49,6 @@ void SetUIMode() {
SetSystemUIMode(desired_mode, desired_options);
}
-bool WasLaunchedAsLoginItem() {
- ProcessSerialNumber psn = { 0, kCurrentProcess };
-
- scoped_nsobject<NSDictionary> process_info(
- reinterpret_cast<const NSDictionary*>(
- ProcessInformationCopyDictionary(&psn,
- kProcessDictionaryIncludeAllInformationMask)));
-
- long long temp = [[process_info objectForKey:@"ParentPSN"] longLongValue];
- ProcessSerialNumber parent_psn =
- { (temp >> 32) & 0x00000000FFFFFFFFLL, temp & 0x00000000FFFFFFFFLL };
-
- scoped_nsobject<NSDictionary> parent_info(
- reinterpret_cast<const NSDictionary*>(
- ProcessInformationCopyDictionary(&parent_psn,
- kProcessDictionaryIncludeAllInformationMask)));
-
- // Check that creator process code is that of loginwindow.
- BOOL result =
- [[parent_info objectForKey:@"FileCreator"] isEqualToString:@"lgnw"];
-
- return result == YES;
-}
-
-// Looks into Shared File Lists corresponding to Login Items for the item
-// representing the current application. If such an item is found, returns
-// retained reference to it. Caller is responsible for releasing the reference.
-LSSharedFileListItemRef GetLoginItemForApp() {
- scoped_cftyperef<LSSharedFileListRef> login_items(LSSharedFileListCreate(
- NULL, kLSSharedFileListSessionLoginItems, NULL));
-
- if (!login_items.get()) {
- LOG(ERROR) << "Couldn't get a Login Items list.";
- return NULL;
- }
-
- scoped_nsobject<NSArray> login_items_array(reinterpret_cast<const NSArray*>(
- LSSharedFileListCopySnapshot(login_items, NULL)));
-
- NSURL* url = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
-
- for(NSUInteger i = 0; i < [login_items_array count]; ++i) {
- LSSharedFileListItemRef item = reinterpret_cast<LSSharedFileListItemRef>(
- [login_items_array objectAtIndex:i]);
- CFURLRef item_url_ref = NULL;
-
- if (LSSharedFileListItemResolve(item, 0, &item_url_ref, NULL) == noErr) {
- scoped_cftyperef<CFURLRef> item_url(item_url_ref);
- if (CFEqual(item_url, url)) {
- CFRetain(item);
- return item;
- }
- }
- }
-
- return NULL;
-}
-
-// kLSSharedFileListLoginItemHidden is supported on
-// 10.5, but missing from the 10.5 headers.
-// http://openradar.appspot.com/6482251
-static NSString* kLSSharedFileListLoginItemHidden =
- @"com.apple.loginitem.HideOnLaunch";
-
-bool IsHiddenLoginItem(LSSharedFileListItemRef item) {
- scoped_cftyperef<CFBooleanRef> hidden(reinterpret_cast<CFBooleanRef>(
- LSSharedFileListItemCopyProperty(item,
- reinterpret_cast<CFStringRef>(kLSSharedFileListLoginItemHidden))));
-
- return hidden && hidden == kCFBooleanTrue;
-}
-
} // end namespace
namespace mac_util {
@@ -588,80 +515,4 @@ CGImageRef CopyNSImageToCGImage(NSImage* image) {
return CGBitmapContextCreateImage(context);
}
-bool CheckLoginItemStatus(bool* is_hidden) {
- scoped_cftyperef<LSSharedFileListItemRef> item(GetLoginItemForApp());
- if (!item.get())
- return false;
-
- if (is_hidden)
- *is_hidden = IsHiddenLoginItem(item);
-
- return true;
-}
-
-void AddToLoginItems(bool hide_on_startup) {
- scoped_cftyperef<LSSharedFileListItemRef> item(GetLoginItemForApp());
- if (item.get() && (IsHiddenLoginItem(item) == hide_on_startup)) {
- return; // Already is a login item with required hide flag.
- }
-
- scoped_cftyperef<LSSharedFileListRef> login_items(LSSharedFileListCreate(
- NULL, kLSSharedFileListSessionLoginItems, NULL));
-
- if (!login_items.get()) {
- LOG(ERROR) << "Couldn't get a Login Items list.";
- return;
- }
-
- // Remove the old item, it has wrong hide flag, we'll create a new one.
- if (item.get()) {
- LSSharedFileListItemRemove(login_items, item);
- }
-
- NSURL* url = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
-
- BOOL hide = hide_on_startup ? YES : NO;
- NSDictionary* properties =
- [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:hide]
- forKey:kLSSharedFileListLoginItemHidden];
-
- scoped_cftyperef<LSSharedFileListItemRef> new_item;
- new_item.reset(LSSharedFileListInsertItemURL(
- login_items, kLSSharedFileListItemLast, NULL, NULL,
- reinterpret_cast<CFURLRef>(url),
- reinterpret_cast<CFDictionaryRef>(properties), NULL));
-
- if (!new_item.get()) {
- LOG(ERROR) << "Couldn't insert current app into Login Items list.";
- }
-}
-
-void RemoveFromLoginItems() {
- scoped_cftyperef<LSSharedFileListItemRef> item(GetLoginItemForApp());
- if (!item.get())
- return;
-
- scoped_cftyperef<LSSharedFileListRef> login_items(LSSharedFileListCreate(
- NULL, kLSSharedFileListSessionLoginItems, NULL));
-
- if (!login_items.get()) {
- LOG(ERROR) << "Couldn't get a Login Items list.";
- return;
- }
-
- LSSharedFileListItemRemove(login_items, item);
-}
-
-bool WasLaunchedAsHiddenLoginItem() {
- if (!WasLaunchedAsLoginItem())
- return false;
-
- scoped_cftyperef<LSSharedFileListItemRef> item(GetLoginItemForApp());
- if (!item.get()) {
- LOG(ERROR) << "Process launched at Login but can't access Login Item List.";
- return false;
- }
- return IsHiddenLoginItem(item);
-}
-
} // namespace mac_util