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

Side by Side Diff: components/app_modal/javascript_app_modal_dialog.cc

Issue 1711863004: Restrict JavaScript dialogs to 100 characters. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: better approach Created 4 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/app_modal/javascript_app_modal_dialog.h" 5 #include "components/app_modal/javascript_app_modal_dialog.h"
6 6
7 #include "base/metrics/histogram_macros.h" 7 #include "base/metrics/histogram_macros.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "components/app_modal/javascript_dialog_manager.h" 10 #include "components/app_modal/javascript_dialog_manager.h"
11 #include "components/app_modal/javascript_native_dialog_factory.h" 11 #include "components/app_modal/javascript_native_dialog_factory.h"
12 #include "content/public/browser/web_contents.h" 12 #include "content/public/browser/web_contents.h"
13 #include "ui/gfx/text_elider.h" 13 #include "ui/gfx/text_elider.h"
14 #include "url/origin.h" 14 #include "url/origin.h"
15 15
16 namespace app_modal { 16 namespace app_modal {
17 namespace { 17 namespace {
18 18
19 // Control maximum sizes of various texts passed to us from javascript.
20 #if defined(OS_POSIX) && !defined(OS_MACOSX)
21 // Two-dimensional eliding. Reformat the text of the message dialog
22 // inserting line breaks because otherwise a single long line can overflow
23 // the message dialog (and crash/hang the GTK, depending on the version).
24 const int kMessageTextMaxRows = 32;
25 const int kMessageTextMaxCols = 132;
26 const int kDefaultPromptMaxRows = 24;
27 const int kDefaultPromptMaxCols = 132;
28 void EnforceMaxTextSize(const base::string16& in_string,
29 base::string16* out_string) {
30 gfx::ElideRectangleString(in_string, kMessageTextMaxRows,
31 kMessageTextMaxCols, false, out_string);
32 }
33 void EnforceMaxPromptSize(const base::string16& in_string,
34 base::string16* out_string) {
35 gfx::ElideRectangleString(in_string, kDefaultPromptMaxRows,
36 kDefaultPromptMaxCols, false, out_string);
37 }
38 #else
39 // One-dimensional eliding. Trust the window system to break the string 19 // One-dimensional eliding. Trust the window system to break the string
40 // appropriately, but limit its overall length to something reasonable. 20 // appropriately, but limit its overall length to something reasonable.
41 const size_t kMessageTextMaxSize = 2000; 21 const size_t kMessageTextMaxSize = 100;
42 const size_t kDefaultPromptMaxSize = 2000; 22 const size_t kDefaultPromptMaxSize = 50;
43 void EnforceMaxTextSize(const base::string16& in_string, 23 void EnforceMaxTextSize(const base::string16& in_string,
44 base::string16* out_string) { 24 base::string16* out_string) {
45 gfx::ElideString(in_string, kMessageTextMaxSize, out_string); 25 gfx::ElideString(in_string, kMessageTextMaxSize, out_string);
46 } 26 }
47 void EnforceMaxPromptSize(const base::string16& in_string, 27 void EnforceMaxPromptSize(const base::string16& in_string,
48 base::string16* out_string) { 28 base::string16* out_string) {
49 gfx::ElideString(in_string, kDefaultPromptMaxSize, out_string); 29 gfx::ElideString(in_string, kDefaultPromptMaxSize, out_string);
50 } 30 }
51 #endif
52 31
53 } // namespace 32 } // namespace
54 33
55 ChromeJavaScriptDialogExtraData::ChromeJavaScriptDialogExtraData() 34 ChromeJavaScriptDialogExtraData::ChromeJavaScriptDialogExtraData()
56 : has_already_shown_a_dialog_(false), 35 : has_already_shown_a_dialog_(false),
57 suppress_javascript_messages_(false), 36 suppress_javascript_messages_(false),
58 suppressed_dialog_count_(0) {} 37 suppressed_dialog_count_(0) {}
59 38
60 JavaScriptAppModalDialog::JavaScriptAppModalDialog( 39 JavaScriptAppModalDialog::JavaScriptAppModalDialog(
61 content::WebContents* web_contents, 40 content::WebContents* web_contents,
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 155
177 // static 156 // static
178 std::string JavaScriptAppModalDialog::GetSerializedOriginForWebContents( 157 std::string JavaScriptAppModalDialog::GetSerializedOriginForWebContents(
179 content::WebContents* contents) { 158 content::WebContents* contents) {
180 if (!contents) 159 if (!contents)
181 return url::Origin().Serialize(); 160 return url::Origin().Serialize();
182 return url::Origin(contents->GetLastCommittedURL()).Serialize(); 161 return url::Origin(contents->GetLastCommittedURL()).Serialize();
183 } 162 }
184 163
185 } // namespace app_modal 164 } // namespace app_modal
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698