1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/browser/guest_view/guest_view_events.h"
#include <map>
#include "base/lazy_instance.h"
#include "components/guest_view/common/guest_view_constants.h"
#include "extensions/browser/guest_view/extension_options/extension_options_constants.h"
#include "extensions/browser/guest_view/web_view/web_view_constants.h"
#include "extensions/common/api/extension_options_internal.h"
namespace extensions {
namespace guest_view_events {
namespace {
// WebRequest API events.
constexpr char kEventAuthRequired[] = "webViewInternal.onAuthRequired";
constexpr char kEventBeforeRedirect[] = "webViewInternal.onBeforeRedirect";
constexpr char kEventBeforeRequest[] = "webViewInternal.onBeforeRequest";
constexpr char kEventBeforeSendHeaders[] =
"webViewInternal.onBeforeSendHeaders";
constexpr char kEventCompleted[] = "webViewInternal.onCompleted";
constexpr char kEventErrorOccurred[] = "webViewInternal.onErrorOccurred";
constexpr char kEventSendHeaders[] = "webViewInternal.onSendHeaders";
class EventMap {
public:
EventMap() {
struct NameAndValue {
const char* name;
events::HistogramValue value;
} names_and_values[] = {
{webview::kEventContextMenuShow,
events::CHROME_WEB_VIEW_INTERNAL_ON_CONTEXT_MENU_SHOW},
{api::extension_options_internal::OnClose::kEventName,
events::EXTENSION_OPTIONS_INTERNAL_ON_CLOSE},
{api::extension_options_internal::OnLoad::kEventName,
events::EXTENSION_OPTIONS_INTERNAL_ON_LOAD},
{api::extension_options_internal::OnPreferredSizeChanged::kEventName,
events::EXTENSION_OPTIONS_INTERNAL_ON_PREFERRED_SIZE_CHANGED},
{guest_view::kEventResize, events::GUEST_VIEW_INTERNAL_ON_RESIZE},
{webview::kEventAudioStateChanged,
events::WEB_VIEW_INTERNAL_ON_AUDIO_STATE_CHANGED},
{kEventBeforeRequest, events::WEB_VIEW_INTERNAL_ON_BEFORE_REQUEST},
{kEventBeforeSendHeaders,
events::WEB_VIEW_INTERNAL_ON_BEFORE_SEND_HEADERS},
{webview::kEventClose, events::WEB_VIEW_INTERNAL_ON_CLOSE},
{kEventCompleted, events::WEB_VIEW_INTERNAL_ON_COMPLETED},
{webview::kEventConsoleMessage,
events::WEB_VIEW_INTERNAL_ON_CONSOLE_MESSAGE},
{webview::kEventContentLoad, events::WEB_VIEW_INTERNAL_ON_CONTENT_LOAD},
{webview::kEventDialog, events::WEB_VIEW_INTERNAL_ON_DIALOG},
{webview::kEventExit, events::WEB_VIEW_INTERNAL_ON_EXIT},
{webview::kEventExitFullscreen,
events::WEB_VIEW_INTERNAL_ON_EXIT_FULLSCREEN},
{webview::kEventFindReply, events::WEB_VIEW_INTERNAL_ON_FIND_REPLY},
{webview::kEventHeadersReceived,
events::WEB_VIEW_INTERNAL_ON_HEADERS_RECEIVED},
{webview::kEventFrameNameChanged,
events::WEB_VIEW_INTERNAL_ON_FRAME_NAME_CHANGED},
{webview::kEventLoadAbort, events::WEB_VIEW_INTERNAL_ON_LOAD_ABORT},
{webview::kEventLoadCommit, events::WEB_VIEW_INTERNAL_ON_LOAD_COMMIT},
{webview::kEventLoadProgress,
events::WEB_VIEW_INTERNAL_ON_LOAD_PROGRESS},
{webview::kEventLoadRedirect,
events::WEB_VIEW_INTERNAL_ON_LOAD_REDIRECT},
{webview::kEventLoadStart, events::WEB_VIEW_INTERNAL_ON_LOAD_START},
{webview::kEventLoadStop, events::WEB_VIEW_INTERNAL_ON_LOAD_STOP},
{webview::kEventNewWindow, events::WEB_VIEW_INTERNAL_ON_NEW_WINDOW},
{webview::kEventPermissionRequest,
events::WEB_VIEW_INTERNAL_ON_PERMISSION_REQUEST},
{webview::kEventResponseStarted,
events::WEB_VIEW_INTERNAL_ON_RESPONSE_STARTED},
{webview::kEventResponsive, events::WEB_VIEW_INTERNAL_ON_RESPONSIVE},
{webview::kEventSizeChanged, events::WEB_VIEW_INTERNAL_ON_SIZE_CHANGED},
{webview::kEventUnresponsive,
events::WEB_VIEW_INTERNAL_ON_UNRESPONSIVE},
{webview::kEventZoomChange, events::WEB_VIEW_INTERNAL_ON_ZOOM_CHANGE},
{kEventAuthRequired, events::WEB_VIEW_INTERNAL_ON_AUTH_REQUIRED},
{kEventBeforeRedirect, events::WEB_VIEW_INTERNAL_ON_BEFORE_REDIRECT},
{kEventErrorOccurred, events::WEB_VIEW_INTERNAL_ON_ERROR_OCCURRED},
{kEventSendHeaders, events::WEB_VIEW_INTERNAL_ON_SEND_HEADERS},
};
for (const auto& name_and_value : names_and_values) {
values_[name_and_value.name] = name_and_value.value;
}
}
EventMap(const EventMap&) = delete;
EventMap& operator=(const EventMap&) = delete;
events::HistogramValue Get(const std::string& event_name) {
auto value = values_.find(event_name);
return value != values_.end() ? value->second : events::UNKNOWN;
}
private:
std::map<std::string, events::HistogramValue> values_;
};
base::LazyInstance<EventMap>::DestructorAtExit g_event_map =
LAZY_INSTANCE_INITIALIZER;
} // namespace
events::HistogramValue GetEventHistogramValue(const std::string& event_name) {
return g_event_map.Get().Get(event_name);
}
} // namespace guest_view_events
} // namespace extensions
|