Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Side by Side Diff: components/search_provider_logos/logo_cache.cc

Issue 1548203002: Convert Pass()→std::move() in //components/[n-z]* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix bad headers Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/search_provider_logos/logo_cache.h" 5 #include "components/search_provider_logos/logo_cache.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <utility>
9 10
10 #include "base/files/file_util.h" 11 #include "base/files/file_util.h"
11 #include "base/json/json_reader.h" 12 #include "base/json/json_reader.h"
12 #include "base/json/json_writer.h" 13 #include "base/json/json_writer.h"
13 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
14 #include "base/values.h" 15 #include "base/values.h"
15 16
16 namespace { 17 namespace {
17 18
18 // The cached logo metadata is persisted as JSON using these keys. 19 // The cached logo metadata is persisted as JSON using these keys.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 return metadata_.get(); 78 return metadata_.get();
78 } 79 }
79 80
80 void LogoCache::SetCachedLogo(const EncodedLogo* logo) { 81 void LogoCache::SetCachedLogo(const EncodedLogo* logo) {
81 DCHECK(thread_checker_.CalledOnValidThread()); 82 DCHECK(thread_checker_.CalledOnValidThread());
82 scoped_ptr<LogoMetadata> metadata; 83 scoped_ptr<LogoMetadata> metadata;
83 if (logo) { 84 if (logo) {
84 metadata.reset(new LogoMetadata(logo->metadata)); 85 metadata.reset(new LogoMetadata(logo->metadata));
85 logo_num_bytes_ = static_cast<int>(logo->encoded_image->size()); 86 logo_num_bytes_ = static_cast<int>(logo->encoded_image->size());
86 } 87 }
87 UpdateMetadata(metadata.Pass()); 88 UpdateMetadata(std::move(metadata));
88 WriteLogo(logo ? logo->encoded_image : NULL); 89 WriteLogo(logo ? logo->encoded_image : NULL);
89 } 90 }
90 91
91 scoped_ptr<EncodedLogo> LogoCache::GetCachedLogo() { 92 scoped_ptr<EncodedLogo> LogoCache::GetCachedLogo() {
92 DCHECK(thread_checker_.CalledOnValidThread()); 93 DCHECK(thread_checker_.CalledOnValidThread());
93 94
94 ReadMetadataIfNeeded(); 95 ReadMetadataIfNeeded();
95 if (!metadata_) 96 if (!metadata_)
96 return scoped_ptr<EncodedLogo>(); 97 return scoped_ptr<EncodedLogo>();
97 98
98 scoped_refptr<base::RefCountedString> encoded_image = 99 scoped_refptr<base::RefCountedString> encoded_image =
99 new base::RefCountedString(); 100 new base::RefCountedString();
100 if (!base::ReadFileToString(GetLogoPath(), &encoded_image->data())) { 101 if (!base::ReadFileToString(GetLogoPath(), &encoded_image->data())) {
101 UpdateMetadata(scoped_ptr<LogoMetadata>()); 102 UpdateMetadata(scoped_ptr<LogoMetadata>());
102 return scoped_ptr<EncodedLogo>(); 103 return scoped_ptr<EncodedLogo>();
103 } 104 }
104 105
105 if (encoded_image->size() != static_cast<size_t>(logo_num_bytes_)) { 106 if (encoded_image->size() != static_cast<size_t>(logo_num_bytes_)) {
106 // Delete corrupt metadata and logo. 107 // Delete corrupt metadata and logo.
107 DeleteLogoAndMetadata(); 108 DeleteLogoAndMetadata();
108 UpdateMetadata(scoped_ptr<LogoMetadata>()); 109 UpdateMetadata(scoped_ptr<LogoMetadata>());
109 return scoped_ptr<EncodedLogo>(); 110 return scoped_ptr<EncodedLogo>();
110 } 111 }
111 112
112 scoped_ptr<EncodedLogo> logo(new EncodedLogo()); 113 scoped_ptr<EncodedLogo> logo(new EncodedLogo());
113 logo->encoded_image = encoded_image; 114 logo->encoded_image = encoded_image;
114 logo->metadata = *metadata_; 115 logo->metadata = *metadata_;
115 return logo.Pass(); 116 return logo;
116 } 117 }
117 118
118 // static 119 // static
119 scoped_ptr<LogoMetadata> LogoCache::LogoMetadataFromString( 120 scoped_ptr<LogoMetadata> LogoCache::LogoMetadataFromString(
120 const std::string& str, int* logo_num_bytes) { 121 const std::string& str, int* logo_num_bytes) {
121 scoped_ptr<base::Value> value = base::JSONReader::Read(str); 122 scoped_ptr<base::Value> value = base::JSONReader::Read(str);
122 base::DictionaryValue* dict; 123 base::DictionaryValue* dict;
123 if (!value || !value->GetAsDictionary(&dict)) 124 if (!value || !value->GetAsDictionary(&dict))
124 return scoped_ptr<LogoMetadata>(); 125 return scoped_ptr<LogoMetadata>();
125 126
126 scoped_ptr<LogoMetadata> metadata(new LogoMetadata()); 127 scoped_ptr<LogoMetadata> metadata(new LogoMetadata());
127 if (!dict->GetString(kSourceUrlKey, &metadata->source_url) || 128 if (!dict->GetString(kSourceUrlKey, &metadata->source_url) ||
128 !dict->GetString(kFingerprintKey, &metadata->fingerprint) || 129 !dict->GetString(kFingerprintKey, &metadata->fingerprint) ||
129 !dict->GetString(kOnClickURLKey, &metadata->on_click_url) || 130 !dict->GetString(kOnClickURLKey, &metadata->on_click_url) ||
130 !dict->GetString(kAltTextKey, &metadata->alt_text) || 131 !dict->GetString(kAltTextKey, &metadata->alt_text) ||
131 !dict->GetString(kAnimatedUrlKey, &metadata->animated_url) || 132 !dict->GetString(kAnimatedUrlKey, &metadata->animated_url) ||
132 !dict->GetString(kMimeTypeKey, &metadata->mime_type) || 133 !dict->GetString(kMimeTypeKey, &metadata->mime_type) ||
133 !dict->GetBoolean(kCanShowAfterExpirationKey, 134 !dict->GetBoolean(kCanShowAfterExpirationKey,
134 &metadata->can_show_after_expiration) || 135 &metadata->can_show_after_expiration) ||
135 !dict->GetInteger(kNumBytesKey, logo_num_bytes) || 136 !dict->GetInteger(kNumBytesKey, logo_num_bytes) ||
136 !GetTimeValue(*dict, kExpirationTimeKey, &metadata->expiration_time)) { 137 !GetTimeValue(*dict, kExpirationTimeKey, &metadata->expiration_time)) {
137 return scoped_ptr<LogoMetadata>(); 138 return scoped_ptr<LogoMetadata>();
138 } 139 }
139 140
140 return metadata.Pass(); 141 return metadata;
141 } 142 }
142 143
143 // static 144 // static
144 void LogoCache::LogoMetadataToString(const LogoMetadata& metadata, 145 void LogoCache::LogoMetadataToString(const LogoMetadata& metadata,
145 int num_bytes, 146 int num_bytes,
146 std::string* str) { 147 std::string* str) {
147 base::DictionaryValue dict; 148 base::DictionaryValue dict;
148 dict.SetString(kSourceUrlKey, metadata.source_url); 149 dict.SetString(kSourceUrlKey, metadata.source_url);
149 dict.SetString(kFingerprintKey, metadata.fingerprint); 150 dict.SetString(kFingerprintKey, metadata.fingerprint);
150 dict.SetString(kOnClickURLKey, metadata.on_click_url); 151 dict.SetString(kOnClickURLKey, metadata.on_click_url);
151 dict.SetString(kAltTextKey, metadata.alt_text); 152 dict.SetString(kAltTextKey, metadata.alt_text);
152 dict.SetString(kAnimatedUrlKey, metadata.animated_url); 153 dict.SetString(kAnimatedUrlKey, metadata.animated_url);
153 dict.SetString(kMimeTypeKey, metadata.mime_type); 154 dict.SetString(kMimeTypeKey, metadata.mime_type);
154 dict.SetBoolean(kCanShowAfterExpirationKey, 155 dict.SetBoolean(kCanShowAfterExpirationKey,
155 metadata.can_show_after_expiration); 156 metadata.can_show_after_expiration);
156 dict.SetInteger(kNumBytesKey, num_bytes); 157 dict.SetInteger(kNumBytesKey, num_bytes);
157 SetTimeValue(dict, kExpirationTimeKey, metadata.expiration_time); 158 SetTimeValue(dict, kExpirationTimeKey, metadata.expiration_time);
158 base::JSONWriter::Write(dict, str); 159 base::JSONWriter::Write(dict, str);
159 } 160 }
160 161
161 base::FilePath LogoCache::GetLogoPath() { 162 base::FilePath LogoCache::GetLogoPath() {
162 return cache_directory_.Append(FILE_PATH_LITERAL("logo")); 163 return cache_directory_.Append(FILE_PATH_LITERAL("logo"));
163 } 164 }
164 165
165 base::FilePath LogoCache::GetMetadataPath() { 166 base::FilePath LogoCache::GetMetadataPath() {
166 return cache_directory_.Append(FILE_PATH_LITERAL("metadata")); 167 return cache_directory_.Append(FILE_PATH_LITERAL("metadata"));
167 } 168 }
168 169
169 void LogoCache::UpdateMetadata(scoped_ptr<LogoMetadata> metadata) { 170 void LogoCache::UpdateMetadata(scoped_ptr<LogoMetadata> metadata) {
170 metadata_ = metadata.Pass(); 171 metadata_ = std::move(metadata);
171 metadata_is_valid_ = true; 172 metadata_is_valid_ = true;
172 } 173 }
173 174
174 void LogoCache::ReadMetadataIfNeeded() { 175 void LogoCache::ReadMetadataIfNeeded() {
175 if (metadata_is_valid_) 176 if (metadata_is_valid_)
176 return; 177 return;
177 178
178 scoped_ptr<LogoMetadata> metadata; 179 scoped_ptr<LogoMetadata> metadata;
179 base::FilePath metadata_path = GetMetadataPath(); 180 base::FilePath metadata_path = GetMetadataPath();
180 std::string str; 181 std::string str;
181 if (base::ReadFileToString(metadata_path, &str)) { 182 if (base::ReadFileToString(metadata_path, &str)) {
182 metadata = LogoMetadataFromString(str, &logo_num_bytes_); 183 metadata = LogoMetadataFromString(str, &logo_num_bytes_);
183 if (!metadata) { 184 if (!metadata) {
184 // Delete corrupt metadata and logo. 185 // Delete corrupt metadata and logo.
185 DeleteLogoAndMetadata(); 186 DeleteLogoAndMetadata();
186 } 187 }
187 } 188 }
188 189
189 UpdateMetadata(metadata.Pass()); 190 UpdateMetadata(std::move(metadata));
190 } 191 }
191 192
192 void LogoCache::WriteMetadata() { 193 void LogoCache::WriteMetadata() {
193 if (!EnsureCacheDirectoryExists()) 194 if (!EnsureCacheDirectoryExists())
194 return; 195 return;
195 196
196 std::string str; 197 std::string str;
197 LogoMetadataToString(*metadata_, logo_num_bytes_, &str); 198 LogoMetadataToString(*metadata_, logo_num_bytes_, &str);
198 base::WriteFile(GetMetadataPath(), str.data(), static_cast<int>(str.size())); 199 base::WriteFile(GetMetadataPath(), str.data(), static_cast<int>(str.size()));
199 } 200 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 base::DeleteFile(GetMetadataPath(), false); 233 base::DeleteFile(GetMetadataPath(), false);
233 } 234 }
234 235
235 bool LogoCache::EnsureCacheDirectoryExists() { 236 bool LogoCache::EnsureCacheDirectoryExists() {
236 if (base::DirectoryExists(cache_directory_)) 237 if (base::DirectoryExists(cache_directory_))
237 return true; 238 return true;
238 return base::CreateDirectory(cache_directory_); 239 return base::CreateDirectory(cache_directory_);
239 } 240 }
240 241
241 } // namespace search_provider_logos 242 } // namespace search_provider_logos
OLDNEW
« no previous file with comments | « components/search_provider_logos/google_logo_api.cc ('k') | components/search_provider_logos/logo_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698