| Index: chrome/browser/profile.cc
 | 
| ===================================================================
 | 
| --- chrome/browser/profile.cc	(revision 49439)
 | 
| +++ chrome/browser/profile.cc	(working copy)
 | 
| @@ -179,6 +179,56 @@
 | 
|  #endif
 | 
|    return false;
 | 
|  }
 | 
| +
 | 
| +// Simple task to log the size of the current profile.
 | 
| +class ProfileSizeTask : public Task {
 | 
| + public:
 | 
| +  explicit ProfileSizeTask(const FilePath& path) : path_(path) {}
 | 
| +  virtual ~ProfileSizeTask() {}
 | 
| +
 | 
| +  virtual void Run();
 | 
| + private:
 | 
| +  FilePath path_;
 | 
| +};
 | 
| +
 | 
| +void ProfileSizeTask::Run() {
 | 
| +  int64 size = file_util::ComputeFilesSize(path_, FILE_PATH_LITERAL("*"));
 | 
| +  int size_MB = static_cast<int>(size  / (1024 * 1024));
 | 
| +  UMA_HISTOGRAM_COUNTS_10000("Profile.TotalSize", size_MB);
 | 
| +
 | 
| +  size = file_util::ComputeFilesSize(path_, FILE_PATH_LITERAL("History"));
 | 
| +  size_MB = static_cast<int>(size  / (1024 * 1024));
 | 
| +  UMA_HISTOGRAM_COUNTS_10000("Profile.HistorySize", size_MB);
 | 
| +
 | 
| +  size = file_util::ComputeFilesSize(path_, FILE_PATH_LITERAL("History*"));
 | 
| +  size_MB = static_cast<int>(size  / (1024 * 1024));
 | 
| +  UMA_HISTOGRAM_COUNTS_10000("Profile.TotalHistorySize", size_MB);
 | 
| +
 | 
| +  size = file_util::ComputeFilesSize(path_, FILE_PATH_LITERAL("Cookies"));
 | 
| +  size_MB = static_cast<int>(size  / (1024 * 1024));
 | 
| +  UMA_HISTOGRAM_COUNTS_10000("Profile.CookiesSize", size_MB);
 | 
| +
 | 
| +  size = file_util::ComputeFilesSize(path_, FILE_PATH_LITERAL("Bookmarks"));
 | 
| +  size_MB = static_cast<int>(size  / (1024 * 1024));
 | 
| +  UMA_HISTOGRAM_COUNTS_10000("Profile.BookmarksSize", size_MB);
 | 
| +
 | 
| +  size = file_util::ComputeFilesSize(path_, FILE_PATH_LITERAL("Thumbnails"));
 | 
| +  size_MB = static_cast<int>(size  / (1024 * 1024));
 | 
| +  UMA_HISTOGRAM_COUNTS_10000("Profile.ThumbnailsSize", size_MB);
 | 
| +
 | 
| +  size = file_util::ComputeFilesSize(path_, FILE_PATH_LITERAL("Visited Links"));
 | 
| +  size_MB = static_cast<int>(size  / (1024 * 1024));
 | 
| +  UMA_HISTOGRAM_COUNTS_10000("Profile.VisitedLinksSize", size_MB);
 | 
| +
 | 
| +  size = file_util::ComputeFilesSize(path_, FILE_PATH_LITERAL("Web Data"));
 | 
| +  size_MB = static_cast<int>(size  / (1024 * 1024));
 | 
| +  UMA_HISTOGRAM_COUNTS_10000("Profile.WebDataSize", size_MB);
 | 
| +
 | 
| +  size = file_util::ComputeFilesSize(path_, FILE_PATH_LITERAL("Extension*"));
 | 
| +  size_MB = static_cast<int>(size  / (1024 * 1024));
 | 
| +  UMA_HISTOGRAM_COUNTS_10000("Profile.ExtensionSize", size_MB);
 | 
| +}
 | 
| +
 | 
|  }  // namespace
 | 
|  
 | 
|  // A pointer to the request context for the default profile.  See comments on
 | 
| @@ -262,11 +312,10 @@
 | 
|    }
 | 
|  
 | 
|    virtual ~OffTheRecordProfileImpl() {
 | 
| -   NotificationService::current()->Notify(
 | 
| -      NotificationType::PROFILE_DESTROYED,
 | 
| -      Source<Profile>(this),
 | 
| -      NotificationService::NoDetails());
 | 
| -   CleanupRequestContext(request_context_);
 | 
| +    NotificationService::current()->Notify(NotificationType::PROFILE_DESTROYED,
 | 
| +                                           Source<Profile>(this),
 | 
| +                                           NotificationService::NoDetails());
 | 
| +    CleanupRequestContext(request_context_);
 | 
|    }
 | 
|  
 | 
|    virtual ProfileId GetRuntimeId() {
 | 
| @@ -749,6 +798,10 @@
 | 
|  #endif
 | 
|  
 | 
|    pinned_tab_service_.reset(new PinnedTabService(this));
 | 
| +
 | 
| +  // Log the profile size after a reasonable startup delay.
 | 
| +  ChromeThread::PostDelayedTask(ChromeThread::FILE, FROM_HERE,
 | 
| +                                new ProfileSizeTask(path_), 112000);
 | 
|  }
 | 
|  
 | 
|  void ProfileImpl::InitExtensions() {
 | 
| 
 |