Chromium Code Reviews| Index: chrome/browser/ui/webui/theme_source.cc |
| diff --git a/chrome/browser/ui/webui/theme_source.cc b/chrome/browser/ui/webui/theme_source.cc |
| index 8e5de32c452c9535570c46d3c463ab3d632b134e..4234c4cf97971684fa5336e6b85b4177671c83c4 100644 |
| --- a/chrome/browser/ui/webui/theme_source.cc |
| +++ b/chrome/browser/ui/webui/theme_source.cc |
| @@ -62,18 +62,22 @@ void ProcessResourceOnUIThread(int resource_id, |
| scale, data); |
| } |
| +base::RefCountedMemory* GetNewTabCSSOnUIThread(Profile* profile) { |
|
Evan Stade
2016/10/03 20:16:59
nit: style guide says NewTabCssOnUiThread
Alexei Svitkine (slow)
2016/10/03 21:02:45
Done - changed the other function in this file too
|
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| + |
| + NTPResourceCache::WindowType type = |
| + NTPResourceCache::GetWindowType(profile, nullptr); |
| + return NTPResourceCacheFactory::GetForProfile(profile)->GetNewTabCSS(type); |
| +} |
| + |
| } // namespace |
| //////////////////////////////////////////////////////////////////////////////// |
| // ThemeSource, public: |
| ThemeSource::ThemeSource(Profile* profile) |
| - : profile_(profile->GetOriginalProfile()) { |
| - // NB: it's important that this is |profile| and not |profile_|. |
| - NTPResourceCache::WindowType win_type = |
| - NTPResourceCache::GetWindowType(profile, nullptr); |
| - css_bytes_ = |
| - NTPResourceCacheFactory::GetForProfile(profile)->GetNewTabCSS(win_type); |
| + : profile_(profile), |
| + original_profile_(profile->GetOriginalProfile()) { |
|
Evan Stade
2016/10/03 20:16:59
why not just inline profile_->GetOriginalProfile w
Alexei Svitkine (slow)
2016/10/03 21:02:45
Done.
|
| } |
| ThemeSource::~ThemeSource() { |
| @@ -95,7 +99,11 @@ void ThemeSource::StartDataRequest( |
| if (IsNewTabCssPath(parsed_path)) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| - callback.Run(css_bytes_.get()); |
| + // NB: it's important that this is |profile_| and not |original_profile_|. |
| + content::BrowserThread::PostTaskAndReplyWithResult( |
| + content::BrowserThread::UI, FROM_HERE, |
| + base::Bind(&GetNewTabCSSOnUIThread, profile_), |
| + callback); |
| return; |
| } |
| @@ -175,12 +183,6 @@ base::MessageLoop* ThemeSource::MessageLoopForRequestPath( |
| content::URLDataSource::MessageLoopForRequestPath(path) : nullptr; |
| } |
| -bool ThemeSource::ShouldReplaceExistingSource() const { |
| - // We currently get the css_bytes_ in the ThemeSource constructor, so we need |
| - // to recreate the source itself when a theme changes. |
| - return true; |
| -} |
| - |
| bool ThemeSource::ShouldServiceRequest(const net::URLRequest* request) const { |
| return request->url().SchemeIs(chrome::kChromeSearchScheme) ? |
| InstantIOContext::ShouldServiceRequest(request) : |
| @@ -198,7 +200,7 @@ void ThemeSource::SendThemeBitmap( |
| if (BrowserThemePack::IsPersistentImageID(resource_id)) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| scoped_refptr<base::RefCountedMemory> image_data( |
| - ThemeService::GetThemeProviderForProfile(profile_).GetRawData( |
| + ThemeService::GetThemeProviderForProfile(original_profile_).GetRawData( |
| resource_id, scale_factor)); |
| callback.Run(image_data.get()); |
| } else { |
| @@ -216,7 +218,7 @@ void ThemeSource::SendThemeImage( |
| if (BrowserThemePack::IsPersistentImageID(resource_id)) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| const ui::ThemeProvider& tp = |
| - ThemeService::GetThemeProviderForProfile(profile_); |
| + ThemeService::GetThemeProviderForProfile(original_profile_); |
| ProcessImageOnUIThread(*tp.GetImageSkiaNamed(resource_id), scale, data); |
| callback.Run(data.get()); |
| } else { |