Page Speed Optimization Libraries
1.5.27.2
|
00001 // Copyright 2013 Google Inc. 00016 00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_CONSOLE_SUGGESTIONS_H_ 00018 #define NET_INSTAWEB_UTIL_PUBLIC_CONSOLE_SUGGESTIONS_H_ 00019 00020 #include <vector> 00021 00022 #include "net/instaweb/util/public/basictypes.h" 00023 #include "net/instaweb/util/public/gtest_prod.h" 00024 #include "net/instaweb/util/public/string.h" 00025 #include "net/instaweb/util/public/string_util.h" 00026 00027 namespace net_instaweb { 00028 00029 class Statistics; 00030 00036 struct ConsoleSuggestion { 00037 ConsoleSuggestion(double importance_in, GoogleString message_in, 00038 GoogleString doc_url_in) 00039 : importance(importance_in), message(message_in), doc_url(doc_url_in) {} 00040 00041 double importance; 00042 GoogleString message; 00043 GoogleString doc_url; 00044 }; 00045 00048 class ConsoleSuggestionsFactory { 00049 public: 00050 explicit ConsoleSuggestionsFactory(Statistics* stats) : stats_(stats) {} 00051 virtual ~ConsoleSuggestionsFactory(); 00052 00056 virtual void GenerateSuggestions(); 00057 00060 const std::vector<ConsoleSuggestion>* suggestions() const { 00061 return &suggestions_; 00062 } 00063 00064 protected: 00067 int64 StatValue(StringPiece var_name); 00069 double StatRatio(StringPiece numerator, StringPiece denominator); 00072 double StatSumRatio(StringPiece bad, StringPiece good); 00073 00074 private: 00075 FRIEND_TEST(ConsoleSuggestionsTest, Stats); 00076 00077 Statistics* stats_; 00078 std::vector<ConsoleSuggestion> suggestions_; 00079 00080 DISALLOW_COPY_AND_ASSIGN(ConsoleSuggestionsFactory); 00081 }; 00082 00083 } 00084 00085 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_CONSOLE_SUGGESTIONS_H_