Index: ios/chrome/browser/favicon/favicon_attributes_provider.h |
diff --git a/ios/chrome/browser/favicon/favicon_attributes_provider.h b/ios/chrome/browser/favicon/favicon_attributes_provider.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b018a960b3dc937f6ec357f52548d9f930dc3e35 |
--- /dev/null |
+++ b/ios/chrome/browser/favicon/favicon_attributes_provider.h |
@@ -0,0 +1,48 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef IOS_CHROME_BROWSER_FAVICON_FAVICON_ATTRIBUTES_PROVIDER_H_ |
+#define IOS_CHROME_BROWSER_FAVICON_FAVICON_ATTRIBUTES_PROVIDER_H_ |
+ |
+#import <UIKit/UIKit.h> |
+#import "ios/chrome/browser/favicon/favicon_attributes.h" |
+ |
+namespace favicon { |
+class LargeIconService; |
+} // namespace favicon |
+ |
+@class FaviconViewProvider; |
+class GURL; |
+ |
+// Object to fetch favicon attributes by URL - an image or a fallback icon if |
+// there is no favicon image available with large enough resolution. |
+@interface FaviconAttributesProvider : NSObject |
+// Favicon attributes associated with |URL| will be fetched using |
+// |largeIconService|. The favicon will be rendered with height and width equal |
+// to |faviconSize|, and the image will be fetched if the source size is greater |
+// than or equal to |minFaviconSize|. |
+- (instancetype _Nonnull) |
+initWithFaviconSize:(CGFloat)faviconSize |
+ minFaviconSize:(CGFloat)minFaviconSize |
+ largeIconService:(favicon::LargeIconService* _Nonnull)largeIconService |
+ NS_DESIGNATED_INITIALIZER; |
+- (instancetype _Nonnull)init NS_UNAVAILABLE; |
+ |
+// Fetches favicon attributes and calls the completion block. |
+- (void)fetchFaviconAttributesForURL:(const GURL&)URL |
+ completion: |
+ (void (^_Nonnull)(FaviconAttributes* _Nonnull)) |
+ completion; |
+ |
+// LargeIconService used to fetch favicons. |
+@property(nonatomic, readonly, nonnull) |
+ favicon::LargeIconService* largeIconService; |
+// Minimal acceptable favicon size. Below that, will fall back to a monogram. |
+@property(nonatomic, readonly) CGFloat minSize; |
+// Expected favicon size (in points). Will downscale favicon to this. |
+@property(nonatomic, readonly) CGFloat faviconSize; |
+ |
+@end |
+ |
+#endif // IOS_CHROME_BROWSER_FAVICON_FAVICON_ATTRIBUTES_PROVIDER_H_ |