1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/browser/webui/generic_handler.h"
8 #include "base/bind_helpers.h"
9 #include "base/logging.h"
10 #include "base/values.h"
11 #include "content/public/browser/web_ui.h"
12 #include "content/public/browser/web_contents.h"
13 #include "ui/base/window_open_disposition.h"
17 GenericHandler::GenericHandler() {
20 GenericHandler::~GenericHandler() {
23 void GenericHandler::RegisterMessages() {
24 web_ui()->RegisterMessageCallback("navigateToUrl",
25 base::Bind(&GenericHandler::HandleNavigateToUrl
, base::Unretained(this)));
28 void GenericHandler::HandleNavigateToUrl(const base::ListValue
* args
) {
29 std::string url_string
;
30 std::string target_string
;
37 CHECK(args
->GetString(0, &url_string
));
38 CHECK(args
->GetString(1, &target_string
));
39 CHECK(args
->GetDouble(2, &button
));
40 CHECK(args
->GetBoolean(3, &alt_key
));
41 CHECK(args
->GetBoolean(4, &ctrl_key
));
42 CHECK(args
->GetBoolean(5, &meta_key
));
43 CHECK(args
->GetBoolean(6, &shift_key
));
45 CHECK(button
== 0.0 || button
== 1.0);
46 bool middle_button
= (button
== 1.0);
48 WindowOpenDisposition disposition
= ui::DispositionFromClick(
49 middle_button
, alt_key
, ctrl_key
, meta_key
, shift_key
);
50 if (disposition
== CURRENT_TAB
&& target_string
== "_blank")
51 disposition
= NEW_FOREGROUND_TAB
;
53 web_ui()->GetWebContents()->OpenURL(OpenURLParams(
54 GURL(url_string
), Referrer(), disposition
, PAGE_TRANSITION_LINK
, false));
56 // This may delete us!
59 } // namespace content