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 #include "chrome/browser/banners/app_banner_debug_log.h" | 5 #include "chrome/browser/banners/app_banner_debug_log.h" |
6 | 6 |
| 7 #include "base/strings/stringprintf.h" |
7 #include "content/public/browser/render_frame_host.h" | 8 #include "content/public/browser/render_frame_host.h" |
8 #include "content/public/browser/web_contents.h" | 9 #include "content/public/browser/web_contents.h" |
9 | 10 |
10 namespace banners { | 11 namespace banners { |
11 | 12 |
12 const char kRendererRequestCancel[] = | 13 static const char kRendererRequestCancelMessage[] = |
13 "renderer has requested the banner prompt be cancelled"; | 14 "page has requested the banner prompt be cancelled"; |
14 const char kManifestEmpty[] = | 15 static const char kManifestEmptyMessage[] = |
15 "manifest could not be fetched, is empty, or could not be parsed"; | 16 "manifest could not be fetched, is empty, or could not be parsed"; |
16 const char kNoManifest[] = "site has no manifest <link> URL"; | 17 static const char kNoManifestMessage[] = |
17 // The required size is prepended. | 18 "site has no manifest <link> URL"; |
18 const char kNoIconMatchingRequirements[] = | 19 static const char kNoIconMatchingRequirementsMessage[] = |
19 "px square icon is required, but no supplied icon is at least this size"; | 20 "%spx square icon is required, but no supplied icon is at least this size"; |
20 const char kCannotDownloadIcon[] = "could not download the specified icon"; | 21 static const char kCannotDownloadIconMessage[] = |
21 const char kNoMatchingServiceWorker[] = | 22 "could not download the specified icon"; |
| 23 static const char kNoMatchingServiceWorkerMessage[] = |
22 "no matching service worker detected. You may need to reload the page, or " | 24 "no matching service worker detected. You may need to reload the page, or " |
23 "check that the service worker for the current page also controls the " | 25 "check that the service worker for the current page also controls the " |
24 "start URL from the manifest"; | 26 "start URL from the manifest"; |
25 const char kNoIconAvailable[] = "no icon available to display"; | 27 static const char kNoIconAvailableMessage[] = |
26 const char kUserNavigatedBeforeBannerShown[] = | 28 "no icon available to display"; |
| 29 static const char kUserNavigatedBeforeBannerShownMessage[] = |
27 "the user navigated before the banner could be shown"; | 30 "the user navigated before the banner could be shown"; |
28 const char kStartURLNotValid[] = "start URL in manifest is not valid"; | 31 static const char kStartURLNotValidMessage[] = |
29 const char kManifestMissingNameOrShortName[] = | 32 "start URL in manifest is not valid"; |
| 33 static const char kManifestMissingNameOrShortNameMessage[] = |
30 "one of manifest name or short name must be specified"; | 34 "one of manifest name or short name must be specified"; |
31 const char kManifestMissingSuitableIcon[] = | 35 static const char kManifestMissingSuitableIconMessage[] = |
32 "manifest does not contain a suitable icon - PNG format of at least " | 36 "manifest does not contain a suitable icon - PNG format of at least " |
33 "144x144px is required, and the sizes attribute must be set"; | 37 "144x144px is required, and the sizes attribute must be set"; |
34 const char kNotLoadedInMainFrame[] = "page not loaded in the main frame"; | 38 static const char kNotLoadedInMainFrameMessage[] = |
35 const char kNotServedFromSecureOrigin[] = | 39 "page not loaded in the main frame"; |
| 40 static const char kNotServedFromSecureOriginMessage[] = |
36 "page not served from a secure origin"; | 41 "page not served from a secure origin"; |
37 // The leading space is intentional as another string is prepended. | 42 // The leading space is intentional as another string is prepended. |
38 const char kIgnoredNotSupportedOnAndroid[] = | 43 static const char kIgnoredNotSupportedOnAndroidMessage[] = |
39 " application ignored: not supported on Android"; | 44 "%s application is not supported on Android"; |
40 const char kIgnoredNoId[] = "play application ignored: no id provided"; | 45 static const char kIgnoredNoIdMessage[] = |
41 const char kIgnoredIdsDoNotMatch[] = | 46 "no Play store ID provided"; |
42 "play application ignored: app URL and id fields were specified in the " | 47 static const char kIgnoredIdsDoNotMatchMessage[] = |
43 "manifest, but they do not match"; | 48 "a Play app URL and Play store ID were specified in the manifest, but they" |
| 49 " do not match"; |
44 | 50 |
45 void OutputDeveloperNotShownMessage(content::WebContents* web_contents, | 51 void OutputDeveloperNotShownMessage(content::WebContents* web_contents, |
46 const std::string& message, | 52 OutputDeveloperMessageCode code, |
47 bool is_debug_mode) { | 53 bool is_debug_mode) { |
48 OutputDeveloperDebugMessage(web_contents, "not shown: " + message, | 54 OutputDeveloperNotShownMessage(web_contents, code, std::string(), |
49 is_debug_mode); | 55 is_debug_mode); |
50 } | 56 } |
51 | 57 |
52 void OutputDeveloperDebugMessage(content::WebContents* web_contents, | 58 void OutputDeveloperNotShownMessage(content::WebContents* web_contents, |
53 const std::string& message, | 59 OutputDeveloperMessageCode code, |
54 bool is_debug_mode) { | 60 const std::string& param, |
| 61 bool is_debug_mode) { |
55 if (!is_debug_mode || !web_contents) | 62 if (!is_debug_mode || !web_contents) |
56 return; | 63 return; |
| 64 |
| 65 const char* pattern; |
| 66 content::ConsoleMessageLevel severity = content::CONSOLE_MESSAGE_LEVEL_ERROR; |
| 67 switch (code) { |
| 68 case kRendererRequestCancel: |
| 69 pattern = kRendererRequestCancelMessage; |
| 70 severity = content::CONSOLE_MESSAGE_LEVEL_LOG; |
| 71 break; |
| 72 case kManifestEmpty: |
| 73 pattern = kManifestEmptyMessage; |
| 74 break; |
| 75 case kNoManifest: |
| 76 pattern = kNoManifestMessage; |
| 77 break; |
| 78 case kNoIconMatchingRequirements: |
| 79 pattern = kNoIconMatchingRequirementsMessage; |
| 80 break; |
| 81 case kCannotDownloadIcon: |
| 82 pattern = kCannotDownloadIconMessage; |
| 83 break; |
| 84 case kNoMatchingServiceWorker: |
| 85 pattern = kNoMatchingServiceWorkerMessage; |
| 86 break; |
| 87 case kNoIconAvailable: |
| 88 pattern = kNoIconAvailableMessage; |
| 89 break; |
| 90 case kUserNavigatedBeforeBannerShown: |
| 91 pattern = kUserNavigatedBeforeBannerShownMessage; |
| 92 severity = content::CONSOLE_MESSAGE_LEVEL_WARNING; |
| 93 break; |
| 94 case kStartURLNotValid: |
| 95 pattern = kStartURLNotValidMessage; |
| 96 break; |
| 97 case kManifestMissingNameOrShortName: |
| 98 pattern = kManifestMissingNameOrShortNameMessage; |
| 99 break; |
| 100 case kManifestMissingSuitableIcon: |
| 101 pattern = kManifestMissingSuitableIconMessage; |
| 102 break; |
| 103 case kNotLoadedInMainFrame: |
| 104 pattern = kNotLoadedInMainFrameMessage; |
| 105 break; |
| 106 case kNotServedFromSecureOrigin: |
| 107 pattern = kNotServedFromSecureOriginMessage; |
| 108 break; |
| 109 case kIgnoredNotSupportedOnAndroid: |
| 110 pattern = kIgnoredNotSupportedOnAndroidMessage; |
| 111 severity = content::CONSOLE_MESSAGE_LEVEL_WARNING; |
| 112 break; |
| 113 case kIgnoredNoId: |
| 114 pattern = kIgnoredNoIdMessage; |
| 115 break; |
| 116 case kIgnoredIdsDoNotMatch: |
| 117 pattern = kIgnoredIdsDoNotMatchMessage; |
| 118 break; |
| 119 default: |
| 120 NOTREACHED(); |
| 121 return; |
| 122 } |
| 123 std::string message = param.empty() ? |
| 124 pattern : base::StringPrintf(pattern, param.c_str()); |
57 web_contents->GetMainFrame()->AddMessageToConsole( | 125 web_contents->GetMainFrame()->AddMessageToConsole( |
58 content::CONSOLE_MESSAGE_LEVEL_DEBUG, "App banner " + message); | 126 severity, "App banner not shown: " + message); |
| 127 |
59 } | 128 } |
60 | 129 |
61 } // namespace banners | 130 } // namespace banners |
OLD | NEW |