Index: chrome/browser/cocoa/custom_home_pages_model.mm |
diff --git a/chrome/browser/cocoa/custom_home_pages_model.mm b/chrome/browser/cocoa/custom_home_pages_model.mm |
index 084cf114c31bf65c1fcaa19214772745b290d3ae..9d47c415cadb649a34b83768edfec429d447210c 100644 |
--- a/chrome/browser/cocoa/custom_home_pages_model.mm |
+++ b/chrome/browser/cocoa/custom_home_pages_model.mm |
@@ -5,29 +5,16 @@ |
#import "chrome/browser/cocoa/custom_home_pages_model.h" |
#include "base/sys_string_conversions.h" |
-#include "chrome/browser/history/history.h" |
#include "chrome/browser/net/url_fixer_upper.h" |
+#include "chrome/browser/session_startup_pref.h" |
NSString* const kHomepageEntryChangedNotification = |
@"kHomepageEntryChangedNotification"; |
-// An entry representing a single item in the custom home page model. Stores |
-// a url and a favicon. |
-@interface CustomHomePageEntry : NSObject { |
- @private |
- scoped_nsobject<NSString> url_; |
- scoped_nsobject<NSImage> icon_; |
- |
- // If non-zero, indicates we're loading the favicon for the page. |
- HistoryService::Handle icon_handle_; |
-} |
-@property(nonatomic, copy) NSString* URL; |
-@property(nonatomic, retain) NSImage* image; |
+@interface CustomHomePagesModel (Private) |
+- (void)setURLsInternal:(const std::vector<GURL>&)urls; |
@end |
-//---------------------------------------------------------------------------- |
- |
- |
@implementation CustomHomePagesModel |
- (id)initWithProfile:(Profile*)profile { |
@@ -52,6 +39,8 @@ NSString* const kHomepageEntryChangedNotification = |
- (void)removeObjectFromCustomHomePagesAtIndex:(NSUInteger)index { |
[entries_ removeObjectAtIndex:index]; |
+ // Force a save. |
+ [self validateURLs]; |
} |
// Get/set the urls the model currently contains as a group. These will weed |
@@ -70,6 +59,15 @@ NSString* const kHomepageEntryChangedNotification = |
- (void)setURLs:(const std::vector<GURL>&)urls { |
[self willChangeValueForKey:@"customHomePages"]; |
+ [self setURLsInternal:urls]; |
+ SessionStartupPref pref(SessionStartupPref::GetStartupPref(profile_)); |
+ pref.urls = urls; |
+ SessionStartupPref::SetStartupPref(profile_, pref); |
+ [self didChangeValueForKey:@"customHomePages"]; |
+} |
+ |
+// Converts the C++ URLs to Cocoa objects without notifying KVO. |
pink (ping after 24hrs)
2010/07/28 14:49:18
Should you explain why you don't want to notify kv
|
+- (void)setURLsInternal:(const std::vector<GURL>&)urls { |
[entries_ removeAllObjects]; |
for (size_t i = 0; i < urls.size(); ++i) { |
scoped_nsobject<CustomHomePageEntry> entry( |
@@ -81,6 +79,12 @@ NSString* const kHomepageEntryChangedNotification = |
[entries_ addObject:entry]; |
} |
} |
+} |
+ |
+- (void)reloadURLs { |
+ [self willChangeValueForKey:@"customHomePages"]; |
+ SessionStartupPref pref(SessionStartupPref::GetStartupPref(profile_)); |
+ [self setURLsInternal:pref.urls]; |
[self didChangeValueForKey:@"customHomePages"]; |
} |
@@ -129,4 +133,8 @@ NSString* const kHomepageEntryChangedNotification = |
return icon_.get(); |
} |
+- (NSString*)description { |
+ return url_.get(); |
+} |
+ |
@end |