| // Copyright (c) 2010 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 CHROME_BROWSER_BUG_REPORT_UTIL_H_ |
| #define CHROME_BROWSER_BUG_REPORT_UTIL_H_ |
| #pragma once |
| |
| #include <string> |
| |
| #include "base/basictypes.h" |
| #include "chrome/browser/userfeedback/proto/common.pb.h" |
| #include "chrome/browser/userfeedback/proto/extension.pb.h" |
| #include "chrome/browser/userfeedback/proto/math.pb.h" |
| #include "ui/gfx/rect.h" |
| |
| #if defined(OS_MACOSX) |
| #include "base/sys_info.h" |
| #elif defined(OS_WIN) |
| #include "base/win/windows_version.h" |
| #elif defined(OS_CHROMEOS) |
| #include "chrome/browser/chromeos/cros/syslogs_library.h" |
| #include "chrome/browser/chromeos/cros/cros_library.h" |
| #endif |
| |
| class Profile; |
| class TabContents; |
| |
| class BugReportUtil { |
| public: |
| |
| #if defined(OS_MACOSX) |
| enum BugType { |
| PAGE_WONT_LOAD = 0, |
| PAGE_LOOKS_ODD, |
| PHISHING_PAGE, |
| CANT_SIGN_IN, |
| CHROME_MISBEHAVES, |
| SOMETHING_MISSING, |
| BROWSER_CRASH, |
| OTHER_PROBLEM |
| }; |
| #endif |
| |
| |
| // SetOSVersion copies the maj.minor.build + servicePack_string |
| // into a string. We currently have: |
| // base::win::GetVersion returns WinVersion, which is just |
| // an enum of 2000, XP, 2003, or VISTA. Not enough detail for |
| // bug reports. |
| // base::SysInfo::OperatingSystemVersion returns an std::string |
| // but doesn't include the build or service pack. That function |
| // is probably the right one to extend, but will require changing |
| // all the call sites or making it a wrapper around another util. |
| static void SetOSVersion(std::string *os_version); |
| |
| // This sets the address of the feedback server to be used by SendReport |
| static void SetFeedbackServer(const std::string& server); |
| |
| // Send the feedback report after the specified delay |
| static void DispatchFeedback(Profile* profile, std::string* feedback_data, |
| int64 delay); |
| |
| |
| // Generates bug report data. |
| static void SendReport(Profile* profile, |
| int problem_type, |
| const std::string& page_url_text, |
| const std::string& description, |
| const char* png_data, |
| int png_data_length, |
| int png_width, |
| #if defined(OS_CHROMEOS) |
| int png_height, |
| const std::string& user_email_text, |
| const char* zipped_logs_data, |
| int zipped_logs_length, |
| const chromeos::LogDictionaryType* const sys_info); |
| #else |
| int png_height); |
| #endif |
| |
| // Redirects the user to Google's phishing reporting page. |
| static void ReportPhishing(TabContents* currentTab, |
| const std::string& phishing_url); |
| |
| class PostCleanup; |
| |
| private: |
| // Add a key value pair to the feedback object |
| static void AddFeedbackData( |
| userfeedback::ExternalExtensionSubmit* feedback_data, |
| const std::string& key, const std::string& value); |
| |
| // Send the feedback report |
| static void SendFeedback(Profile* profile, std::string* feedback_data, |
| int64 previous_delay); |
| |
| #if defined(OS_CHROMEOS) |
| static bool ValidFeedbackSize(const std::string& content); |
| #endif |
| |
| static std::string feedback_server_; |
| |
| DISALLOW_IMPLICIT_CONSTRUCTORS(BugReportUtil); |
| }; |
| |
| #endif // CHROME_BROWSER_BUG_REPORT_UTIL_H_ |