Page Speed Optimization Libraries  1.5.27.2
net/instaweb/util/public/console_suggestions.h
Go to the documentation of this file.
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_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines