| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef CHROME_BROWSER_BANNERS_APP_BANNER_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_BANNERS_APP_BANNER_MANAGER_H_ |
| 6 #define CHROME_BROWSER_BANNERS_APP_BANNER_MANAGER_H_ | 6 #define CHROME_BROWSER_BANNERS_APP_BANNER_MANAGER_H_ |
| 7 | 7 |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 // Returns whether or not the URLs match for everything except for the ref. | 36 // Returns whether or not the URLs match for everything except for the ref. |
| 37 static bool URLsAreForTheSamePage(const GURL& first, const GURL& second); | 37 static bool URLsAreForTheSamePage(const GURL& first, const GURL& second); |
| 38 | 38 |
| 39 explicit AppBannerManager(int icon_size); | 39 explicit AppBannerManager(int icon_size); |
| 40 ~AppBannerManager() override; | 40 ~AppBannerManager() override; |
| 41 | 41 |
| 42 // WebContentsObserver overrides. | 42 // WebContentsObserver overrides. |
| 43 void DidFinishLoad(content::RenderFrameHost* render_frame_host, | 43 void DidFinishLoad(content::RenderFrameHost* render_frame_host, |
| 44 const GURL& validated_url) override; | 44 const GURL& validated_url) override; |
| 45 | 45 |
| 46 // AppBannerDataFetcher::Delegate overrides. | |
| 47 bool OnInvalidManifest(AppBannerDataFetcher* fetcher) override; | |
| 48 | |
| 49 protected: | 46 protected: |
| 50 void ReplaceWebContents(content::WebContents* web_contents); | 47 void ReplaceWebContents(content::WebContents* web_contents); |
| 51 | 48 |
| 52 // Creates an AppBannerDataFetcher, which constructs an app banner. | 49 // Creates an AppBannerDataFetcher, which constructs an app banner. |
| 53 virtual AppBannerDataFetcher* CreateAppBannerDataFetcher( | 50 virtual AppBannerDataFetcher* CreateAppBannerDataFetcher( |
| 54 base::WeakPtr<AppBannerDataFetcher::Delegate> weak_delegate, | 51 base::WeakPtr<AppBannerDataFetcher::Delegate> weak_delegate, |
| 55 const int ideal_icon_size); | 52 const int ideal_icon_size); |
| 56 | 53 |
| 57 // Return whether the AppBannerDataFetcher is active. | 54 // Return whether the AppBannerDataFetcher is active. |
| 58 bool IsFetcherActive(); | 55 bool IsFetcherActive(); |
| 59 | 56 |
| 60 scoped_refptr<AppBannerDataFetcher> data_fetcher() { return data_fetcher_; } | 57 scoped_refptr<AppBannerDataFetcher> data_fetcher() { return data_fetcher_; } |
| 61 int ideal_icon_size() { return ideal_icon_size_; } | 58 int ideal_icon_size() { return ideal_icon_size_; } |
| 62 | 59 |
| 63 private: | 60 private: |
| 61 // AppBannerDataFetcher::Delegate overrides. |
| 62 bool HandleNonWebApp(const std::string& platform, |
| 63 const GURL& url, |
| 64 const std::string& id) override; |
| 65 |
| 64 // Called after the manager sends a message to the renderer regarding its | 66 // Called after the manager sends a message to the renderer regarding its |
| 65 // intention to show a prompt. The renderer will send a message back with the | 67 // intention to show a prompt. The renderer will send a message back with the |
| 66 // opportunity to cancel. | 68 // opportunity to cancel. |
| 67 void OnBannerPromptReply(content::RenderFrameHost* render_frame_host, | 69 void OnBannerPromptReply(content::RenderFrameHost* render_frame_host, |
| 68 int request_id, | 70 int request_id, |
| 69 blink::WebAppBannerPromptReply reply); | 71 blink::WebAppBannerPromptReply reply); |
| 70 | 72 |
| 71 // Cancels an active DataFetcher, stopping its banners from appearing. | 73 // Cancels an active DataFetcher, stopping its banners from appearing. |
| 72 void CancelActiveFetcher(); | 74 void CancelActiveFetcher(); |
| 73 | 75 |
| 74 // Ideal icon size to use. | 76 // Ideal icon size to use. |
| 75 const int ideal_icon_size_; | 77 const int ideal_icon_size_; |
| 76 | 78 |
| 77 // Fetches the data required to display a banner for the current page. | 79 // Fetches the data required to display a banner for the current page. |
| 78 scoped_refptr<AppBannerDataFetcher> data_fetcher_; | 80 scoped_refptr<AppBannerDataFetcher> data_fetcher_; |
| 79 | 81 |
| 80 // A weak pointer is used as the lifetime of the ServiceWorkerContext is | 82 // A weak pointer is used as the lifetime of the ServiceWorkerContext is |
| 81 // longer than the lifetime of this banner manager. The banner manager | 83 // longer than the lifetime of this banner manager. The banner manager |
| 82 // might be gone when calls sent to the ServiceWorkerContext are completed. | 84 // might be gone when calls sent to the ServiceWorkerContext are completed. |
| 83 base::WeakPtrFactory<AppBannerManager> weak_factory_; | 85 base::WeakPtrFactory<AppBannerManager> weak_factory_; |
| 84 | 86 |
| 85 DISALLOW_COPY_AND_ASSIGN(AppBannerManager); | 87 DISALLOW_COPY_AND_ASSIGN(AppBannerManager); |
| 86 }; // class AppBannerManager | 88 }; // class AppBannerManager |
| 87 | 89 |
| 88 } // namespace banners | 90 } // namespace banners |
| 89 | 91 |
| 90 #endif // CHROME_BROWSER_BANNERS_APP_BANNER_MANAGER_H_ | 92 #endif // CHROME_BROWSER_BANNERS_APP_BANNER_MANAGER_H_ |
| OLD | NEW |